如何只替换SqlServer中完全匹配的单词。
请查看图片。我试图将所有'D'替换为“已完成”。
SELECT
REPLACE(status,'D','COMPLETED')as status from test
但它取代了状态栏中的所有“D”。
但我的期望是我只想替换'D'这个词。
结果应该是这样的
- READY - FRESH - READY - COMPLETED - COMPLETED - COMPLETED
答案 0 :(得分:1)
SELECT
REPLACE(status,'D','COMPLETED')as status from test
WHERE status='D'
修改强>
SELECT
CASE status when 'D' THEN REPLACE(status,'D','COMPLETED') ELSE status END as status
FROM test
答案 1 :(得分:1)
当状态为' D'
时,您可以使用CASE设置不同的状态,而不是REPLACE。SELECT CASE WHEN status = 'D' THEN 'COMPLETED'
ELSE status
END as status
FROM test
答案 2 :(得分:0)
如果您尝试获取状态的原始值,除非它是' D',在这种情况下,您希望返回“已完成”状态'相反,那么这将为你做到
SELECT CASE WHEN status = 'D' THEN 'COMPLETED' ELSE status END as status from test
答案 3 :(得分:0)
你的“目标”中的D前需要一个空格。如果你看下面的例子,你可以看到第一个D(单词AD中的那个)没有被替换,因为目标在D之前有一个空白而AD在D之前有一个A.字符串中的第二个D正在被更改的内容在它之前有一个空白,并且D(以及它前面的空白字符)被更改为“已完成”。
你需要'D'的目标不是'D'的目标。
SQL:
SELECT REPLACE('AD D','D','COMPLETED')
结果:
AD已完成