在SQL中替换字符串

时间:2011-11-04 19:53:31

标签: sql sql-server-2008

我有数据库表,我正在使用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

3 个答案:

答案 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'