34,838
社区成员




USE tempdb
GO
IF OBJECT_ID('t') IS NOT NULL
DROP TABLE t
GO
CREATE TABLE t(
[id] INT IDENTITY(1,1) PRIMARY KEY,
[name] NVARCHAR(10)
)
GO
INSERT INTO t([name]) VALUES('张三')
INSERT INTO t([name]) VALUES('李四')
INSERT INTO t([name]) VALUES('')
INSERT INTO t([name]) VALUES('王五')
---- 以上为测试表及测试数据 ----
;WITH noEmpty AS(
SELECT ROW_NUMBER() OVER (ORDER BY id) AS rid,*
FROM t
WHERE ISNULL([name],'')!=''
)
SELECT B.rid,A.[name]
FROM t AS A LEFT JOIN noEmpty AS B
ON A.id=B.id
DECLARE @t TABLE(
[id] INT IDENTITY(1,1) PRIMARY KEY,
seq INT NULL,
[name] NVARCHAR(10)
)
INSERT INTO @t([name]) VALUES('张三')
INSERT INTO @t([name]) VALUES('李四')
INSERT INTO @t([name]) VALUES('')
INSERT INTO @t([name]) VALUES('王五')
---- 以上为测试表及测试数据 ----
DECLARE @seq INT=0;
UPDATE t SET seq=@seq,@seq=@seq+1 FROM @t t WHERE t.name<>''
SELECT * FROM @t
id seq name
----------- ----------- ----------
1 1 张三
2 2 李四
3 NULL
4 3 王五
(4 行受影响)