SQL:使用顺序数据更新多行(前100个)

时间:2016-12-19 21:08:23

标签: sql sql-server sql-server-2008

我正在研究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。

2 个答案:

答案 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才能将你的字符串放在这个变量中。