查询出某两个序号之间(比如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 ]


执得结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值