2011-11-04 110 views
2

我有数据库表,我使用SQL Server 2008的在SQL字符串替换

表contins一些列一列的变量类型是“字符串”。该列如下所示:

ColumnA 

12301 01 

12342 02 

12501 01 

43201 02 

56401 03 

56766 01 

53478 01 

54601 04 

前5位数字和后2位数字之间有一个空格。如果字符串中的最后两位数字是01,我想将最后两位数字替换为09

+1

三个函数可以做到这一点:REPLACE(),SUBSTRING()和IF()。你应该看看它们,将它们结合起来是一个相当简单的练习。 – robbrit

+1

您是否无法将它分成两列以避免该问题? –

回答

0
UPDATE Table 
    SET ColumnName = LEFT(ColumName, 6) + '09' 
Where ColumnName LIKE '[0-9][0-9][0-9][0-9][0-9] 01' 
+0

感谢您的快速回复。我会尝试。 – ncoder

1

由于列的值总是有你可以利用这个来简化更换逻辑的最后两个字符之前空单,所以你不需要任何复杂的检查:

UPDATE Table 
SET ColumnA = REPLACE (ColumnA, ' 01', '09') 
WHERE ColumnA LIKE '%' + ' 01' 
3

我会用LIKE运营商发现在[空格] + 01结尾的所有行,然后使用REPLACE法09

UPDATE [YourTable] 
SET  ColumnA = REPLACE(ColumnA, ' 01', ' 09') 
WHERE ColumnA LIKE '% 01' 

您可以测试曲,以取代01 ERY这里:http://data.stackexchange.com/stackoverflow/q/116590/

警告:

千万不要对生产数据的更新语句,而不必在开发环境中先进行测试 - 特别是如果你没有写SQL!

+0

+1,非常好的使用DataExplorer的warrning和不错的技巧! – sll

+0

@sll,感谢两个帐户!我没有看到任何说我无法使用DataExplorer进行此类操作的东西,所以我一直在用它:) –

+0

我不喜欢那些WARNING注释。我们假设人们对他们所做的工作负责。 – boes