在Sqlserver中替换

时间:2014-04-07 08:39:57

标签: sql sql-server

如何只替换SqlServer中完全匹配的单词。

请查看图片。我试图将所有'D'替换为“已完成”。

SELECT 
    REPLACE(status,'D','COMPLETED')as status from test

但它取代了状态栏中的所有“D”。

但我的期望是我只想替换'D'这个词。

结果应该是这样的

- READY 
- FRESH  
- READY  
- COMPLETED  
- COMPLETED  
- COMPLETED

4 个答案:

答案 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已完成