-1
我有数字按顺序存储在数据库中,它们存储为文本并包含前面的零。SQL Server - 按序列查找缺失数字,其中数字包含前面的零
Numbers
-------
001
002
003
004
006
007
010
011
-------
查询应找到以下结果
Missing
-------
005
008
009
-------
感谢。
我有数字按顺序存储在数据库中,它们存储为文本并包含前面的零。SQL Server - 按序列查找缺失数字,其中数字包含前面的零
Numbers
-------
001
002
003
004
006
007
010
011
-------
查询应找到以下结果
Missing
-------
005
008
009
-------
感谢。
所有你需要的是一个数字表序列(在SO中有很多实现),然后使用LEFT JOIN
。见下面的查询:seq
是数字形式1到9999的序列,作为int
。
;with seq as
(
select top 9999 row_number() over(order by t1.number) as N
from master..spt_values t1
cross join master..spt_values t2
)
SELECT RIGHT('000'+CAST(s.n AS VARCHAR(3)),3) as MissingNumbers
from seq s
left join yourtable t on s.n = cast(t.Number as int)
where t.number is null
你有多少数字?如何存储大于100的数字? –
大于100的数字存储为100,101等,最大数量为9999 – sourabhgk
您是否尝试将您的问题标题放入搜索引擎? – qxg