有一表 USER ,里有一字段 ID VARCHAR 类型 比如 ID 出现如下情况 ID NAME 000001 SS 000002 XX 000006 CCC 000007 TT 我现在要找出 ID 中间没有用过的ID ,正如,我现在要找到0000003/0000004/000005 请教。。。。。。。 一语句。 可以先找出000003 再接着找000004。。 也可以一起找出 000003/000004 出来。。
DECLARE @maxid int,@sql nvarchar(4000)
SELECT cast(id as int) id INTO #t FROM [user]
IF exists(SELECT id FROM #t)
BEGIN
SELECT @maxid=MAX(id) FROM #t
SET @sql='SELECT TOP '+CAST(@maxid AS varchar)
+' IDENTITY(int,1,1) id INTO ##tem FROM sysobjects a,sysobjects b,sysobjects c'
EXEC sp_executesql @sql
SELECT right('000000'+CAST(id AS varchar(6)),6) id
FROM ##tem WHERE id not in (SELECT id FROM #t)
DROP TABLE ##tem
END
DROP TABLE #t