當前位置:首頁 » 編程語言 » sql語句斷號
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql語句斷號

發布時間: 2022-07-19 09:45:16

① VB如何判斷sql資料庫中某張表的某個欄位(「編號」欄位)是否存在斷號,並顯示所缺斷號

create table #b (a int)

insert #b select 1
insert #b select 2
insert #b select 3
insert #b select 5
insert #b select 7
insert #b select 8
insert #b select 11

select * from #b

declare @a int
declare @b int

select @a=min(a) from #b
select @b=max(a) from #b

while (@a<@b)
begin

if not exists (select * from #b where a =@a )
select @a
set @a=@a+1
end

② 求助一條SQL語句 - 技術問答

select
beginNo
,(select
min(id)-1
from
A
where
id>beginNo)
as
endNO
from
(select
id
1
AS
beginNo
from
A
where
id
1
not
in(select
id
from
A)
and
id
<
(select
max(id)
from
A))
as
newTable
/*
要取斷號,斷號的含義也就是不在源表中的號,但斷號肯定是源表中的某個號碼加上一個數得到的,也就是說,第一步需要找到源表中的每一個值加1後(取名為beginNO)不存在源表序列中的值,然後以此為基礎,在源表中找大於beginNo的最小值(取名endNo),那麼返回一個
數據集
表示原表所有的斷號段,從beginNo到endNO的值即為斷號值,
*/

③ 如何用SQL語句求排除斷號的號碼串

我們經過分析發現,實現這一需求的難點主要有兩點: 1. 如果要找出斷號,用SQL語句實現,主要是要考慮性能; 2. 將排除斷後的使用號碼段的多條記錄轉換為一行顯示,即用SQL實現行列轉換; 如果通過編程來實現,這兩點都不難,但通過SQL來實現,則需要一些技巧。 假設知道已用票據號為3,4,5,7,8,11,12,最小為3,最大為12,求斷號的SQL如下: Select Rownum + (3 - 1)From DualConnect By Rownum

④ sql 刪記錄造成某欄位局部斷號,如何把這些記錄重新排序另這個欄位與其他表某欄位關聯,如何同時更新

這個問題是由於你的序號欄位既想做為關聯的Key,又想用來排序導致的。從你的例子來看,應該是你顯示結果要對單號里的物品進行排序。

如果你用的是oracle,建議直接用 ROW_NUMBER() OVER() 來實現排序。

針對表t1的sql語句:
select id,單號,ROW_NUMBER() OVER(PARTITION BY 單號 ORDER BY 序號) 序號,物品 from t1

針對表t2的sql語句:
select id,單號,ROW_NUMBER() OVER(PARTITION BY 單號 ORDER BY 序號) 序號,價格 from t2

採用這種方式,你就可以把序號欄位拿來關聯,而且刪除了其中一張表的數據後,另外一張表就不用更新。

⑤ 如何用sql語句查詢斷號

經過努力,解決了這個問題(此前,絕大多數的方法都是生成一個從最小直到最大值的連續序列過渡表,然後兩表關聯或利用子查詢,查處源表中不存在的值),該方法比較簡單也比較巧妙,思路如此:
斷號的含義也就是不在源表中的號,但斷號肯定是源表中的某個號碼加上一個數得到的,也就是說,我第一步需要找到源表中的每一個值加1後(取名為f1)不存在源表序列中的值,然後以此為基礎,在源表中找大於f1的最小值(取名f2),那麼從f1到f2的值即為斷號值,到此解決!!

語句如下(絕對原創):

SELECT f1, (select min(f)-1 from t where f>f1) as f2
FROM
(SELECT f+1 AS f1
FROM t
WHERE f+1 not in (select f from t) and f <(select max(f) from t)
) AS cc;

結果如下:
f1 f2
6 6
10 13

徐州 吳艷山

⑥ 怎樣編寫SQL語句找到斷號的地方

樓上2位的方法真不敢恭維,有了不斷號的表還檢查什麼,
還有3天過期了,摟住不知道解決沒有,要是還需要解決的話請在補充中註明~寫語句出來要點時間,不過如果用創建臨時表或者存儲過程的話倒是有現成的
declare @temptable table(a int)

declare @char varchar(1000),@i int,@num int
set @num=(select max(cid) from table) --cid 為id欄位
set @i=1
while @i<=@num
begin
insert @temptable values (@i)
set @i=@i+1
end
select a from @temptable where a not in (select cid from table)

⑦ 在mssql分組查詢一組區間內的斷號區間的sql語句

可以提供思路:

想要做到4-6,8-19可能比較復雜,但是想要把斷號的找出來容易;

首先需要建一個沒有斷號的臨時表:可以按照全宗號,目錄號分組,取出各分組案卷號最大最小值,然後散開(注意:可能缺失的就是極值)散開的函數資料庫都不一樣(笛卡爾積也可以),pgsql有generate_series();

⑧ sql中查詢一個表,ID為自增,當中間出現斷號則顯示出斷的ID號後面的列顯示空或特定字元

select isnull(B.ID,A.rowNum) as ID,isnull(B.NAME,'佔位') as NAME from
(select ROW_NUMBER() over (order by ID) as rowNum from table1) A
full join table1 B on A.rowNum=B.ID

⑨ 怎麼查詢SQL中連續編號中間的斷號

思路給你:

1、找到你的表中的連續編號的最小值。

2、找到你的表中的連續編號的最大值。

3、產生一個臨時表,它的一個欄位最小值到最大值連續產生記錄。

4、找到臨時表中的「那個欄位中」的「記錄」不在「你的表中」的「連續編號」中存在的所有記錄。


參考代碼如下:

--初參條件針對對象表LS_bas1資料庫里的TA1表
--查TA1表中ID號不連續缺少的記錄

--定義三個變數最小記錄、最大記錄、記錄搜索用
DECLARE@MINIDINT,@MAXIDINT,@GOINTINT

--從TA1表中取得ID最小的、ID最大的記錄
SELECT@MINID=MIN(ID),@MAXID=MAX(ID)FROMLS_bas1.DBO.TA1

--從最小記錄開始循環向臨時表#LSTAB里追加記錄,以產生連續的GOID記錄
SET@GOINT=@MINID
SELECT@GOINTASGOIDINTO#LSTAB
WHILE@GOINT<@MAXIDBEGIN
SET@GOINT=@GOINT+1
INSERTINTO#LSTAB(GOID)VALUES(@GOINT)
END

--將#LSTAB中GOID有,與TA1表ID中沒有的記錄找出來,就是你要的
SELECT*FROM#LSTAB
WHEREGOIDNOTIN(
SELECTIDFROMLS_bas1.DBO.TA1
)
ORDERBYGOID

--最後,好習慣,清理中間的臨時表
DROPTABLE#LSTAB

⑩ 請教高手 SQL什麼樣查詢該數字字元斷號

create table A
(
b varchar(20)
)
insert A select
'862557001000023' union select
'862557001000034' union select
'862557001000049' union select
'862557001000057' union select
'862557001000066' union select
'862557001000081' union select
'862557001000110'
go
select rtrim(cast(SUBSTRING(k.b,1,LEN(k.b)-1) as bigint)-1) +'5'
from A k
where not exists(select * from A where cast(SUBSTRING(k.b,1,LEN(k.b)-1) as bigint)+1=cast(SUBSTRING(b,1,LEN(b)-1) as bigint))
/*
-------------------------
862557001000055
862557001000075
862557001000105*/