查询出某两个序号之间(比如001--100)缺少的那些序号
在网上看到一个问题:http://topic.csdn.net/u/20110111/09/f045e687-96b1-429f-ada5-634a7e8f956b.html?83345
如何查询出某两个序号之间(比如001--100)缺少的那些序号。使用SQL的EXCEPT集合运算,解决方法,请参考下面例子:
代码
IF OBJECT_ID ('#t') IS NOT NULL DROP TABLE #t
GO
--创建一个临时表
CREATE TABLE #t
(
Number NVARCHAR(20)
)
--填充001至100个序号进入这个临时表中
DECLARE @i INT = 1
WHILE @i <= 100 --最大的序号
BEGIN
--使用REPLICATE函数,指定的次数(3)复制字符串值
DECLARE @v NVARCHAR(20) = RIGHT(REPLICATE('0',3) + CAST(@i AS NVARCHAR(20)),3)
INSERT INTO #t ([Number]) VALUES (@v)
SET @i = @i + 1
END
--最关键是下面这个EXCEPT(差集)运算
SELECT [Number] FROM #t
EXCEPT
SELECT [序号] FROM [dbo].[ta]
GO
--创建一个临时表
CREATE TABLE #t
(
Number NVARCHAR(20)
)
--填充001至100个序号进入这个临时表中
DECLARE @i INT = 1
WHILE @i <= 100 --最大的序号
BEGIN
--使用REPLICATE函数,指定的次数(3)复制字符串值
DECLARE @v NVARCHAR(20) = RIGHT(REPLICATE('0',3) + CAST(@i AS NVARCHAR(20)),3)
INSERT INTO #t ([Number]) VALUES (@v)
SET @i = @i + 1
END
--最关键是下面这个EXCEPT(差集)运算
SELECT [Number] FROM #t
EXCEPT
SELECT [序号] FROM [dbo].[ta]
执得结果: