我有数据库表,我正在使用SQL Server 2008。
该表包含一些列,在一列中,变量类型为“String”。该列如下所示:
ColumnA
12301 01
12342 02
12501 01
43201 02
56401 03
56766 01
53478 01
54601 04
前5位数字和后2位数字之间有一个空格。如果字符串中的最后两位是09
,我想将最后两位数替换为01
。
答案 0 :(得分:3)
我会使用LIKE
运算符查找以[space] + 01结尾的所有行,然后使用REPLACE
方法将01替换为09
UPDATE [YourTable]
SET ColumnA = REPLACE(ColumnA, ' 01', ' 09')
WHERE ColumnA LIKE '% 01'
您可以在此处测试查询:http://data.stackexchange.com/stackoverflow/q/116590/
警告:强>
在没有首先在开发环境中测试生成数据的情况下,切勿运行更新语句 - 特别是如果您没有编写SQL!
答案 1 :(得分:1)
由于列值在最后两个字符之前总是有一个空格,因此您可以利用它来简化替换逻辑,因此您不需要任何复杂的检查:
UPDATE Table
SET ColumnA = REPLACE (ColumnA, ' 01', '09')
WHERE ColumnA LIKE '%' + ' 01'
答案 2 :(得分:0)
UPDATE Table
SET ColumnName = LEFT(ColumName, 6) + '09'
Where ColumnName LIKE '[0-9][0-9][0-9][0-9][0-9] 01'