SQL Server - 按顺序查找缺失的数字,其中数字包含前面的零

时间:2017-10-13 05:31:29

标签: sql-server sql-server-2012 gaps-and-islands

我将数据按顺序存储在数据库中,这些数字存储为文本并包含前面的零。

Numbers
-------
001
002
003
004
006
007
010
011
-------

查询应该找到以下结果

Missing
-------
005
008
009
-------

感谢。

1 个答案:

答案 0 :(得分:2)

您只需要一个数字表序列(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