我正在研究SQL Server 2008并尝试更新表。我只需要用15位序列更新前100行。我尝试过以下方法:
Declare @id varchar
Set @id = 2435435345962
UPDATE TOP (100) Table1
SET @id = Column_nm = @id + 1
GO
但是我收到以下错误消息:
Msg 426,Level 16,State 1,Line 3
接收变量的长度1小于“Column_nm”列的长度15。
答案 0 :(得分:1)
有几件事。你想从0开始,所以你可以添加00-99。
让我们从基础
开始 WITH cte as (
SELECT TOP 100 *,
ROW_NUMBER() OVER (ORDER BY somefield) -1 as rn -- row_number start with 1.
FROM Table1
ORDER BY somefield
)
UPDATE cte
SET anotherfield = '1234567890ABC' + REPLACE(STR(rn, 2, 0), ' ', '0')
^^ 13 chars ^^ two digits number
答案 1 :(得分:1)
错误消息是关于变量的长度。在SQL Server中,varchar的默认长度为1(来自msdn.microsoft.com我只有法语链接抱歉)。
Declare @id varchar(15)
Set @id = 2435435345962
UPDATE top (100) Table1
SET @id = Column_nm = @id + 1
GO
你必须声明长度为15的id才能将你的字符串放在这个变量中。