我有数据库表,我使用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
。
我有数据库表,我使用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
。
UPDATE Table
SET ColumnName = LEFT(ColumName, 6) + '09'
Where ColumnName LIKE '[0-9][0-9][0-9][0-9][0-9] 01'
感谢您的快速回复。我会尝试。 – ncoder
由于列的值总是有你可以利用这个来简化更换逻辑的最后两个字符之前空单,所以你不需要任何复杂的检查:
UPDATE Table
SET ColumnA = REPLACE (ColumnA, ' 01', '09')
WHERE ColumnA LIKE '%' + ' 01'
我会用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!
三个函数可以做到这一点:REPLACE(),SUBSTRING()和IF()。你应该看看它们,将它们结合起来是一个相当简单的练习。 – robbrit
您是否无法将它分成两列以避免该问题? –