在SQL Server中更新

时间:2014-04-07 10:53:27

标签: sql-server-2008

我有一张桌子说 T1(COL1,COL2,COL3,COL4)

现在说第2列有varchar值。 要求:它应该总是有11位数。

有些值的长度范围为5到11位。

根据col2表中已经存在的值的长度,我需要在数字前加零(0)。

例如,如果值为12345,我需要将其更新为00000012345,依此类推。

请建议。如果可能的话,让我知道有多个案例(基于长度)的表的多行的更新标记的光标。

3 个答案:

答案 0 :(得分:0)

试试这个:

update T1
set col2 = RIGHT('000000'+col2,11)

答案 1 :(得分:0)

SELECT * RIGHT(REPLICATE(' 0',11) + CAST(Col2 AS VARCHAR(11)),11​​)Col2 来自T1

希望这可能有所帮助。

答案 2 :(得分:0)

这样的东西
Update SomeTable set SomeColumn = replicate('0',11 - data_length(SomeColumn)) + SomeColumn
Where blah blah blah

应该这样做

根本不需要光标。