我想在SQL中使用CASE语句更改列中的一堆字符。 代码如下
CASE
WHEN [EmpName] LIKE '%æ%'
THEN REPLACE([EmpName], 'æ', 'ae')
WHEN [EmpName] LIKE '%ø%'
THEN REPLACE([EmpName], 'ø', 'oe')
WHEN [EmpName] LIKE '%å%'
THEN REPLACE([EmpName], 'å', 'aa')
WHEN [EmpName] LIKE '%-%'
THEN REPLACE([EmpName], '-', '')
ELSE [EmpName]
END [EmpName (no special characters)]
问题是如果一个名字有多个不同种类的字符(例如ø和å),它只会只替换其中一个(case语句中的第一个是ø)。 有没有办法一次性替换CASE语句中的每个列出的字符?
谢谢!
答案 0 :(得分:3)
在这种情况下,CASE-WHEN
构造是不必要的。您只需要一个质量REPLACE
,如下所示:
REPLACE(
REPLACE(
REPLACE(
REPLACE([EmpName], 'æ', 'ae'),
'ø', 'oe'),
'å', 'aa'),
'-', '')
不幸的是,替换字符串的大小与原始字符串不同。所以你不能在这里使用TRANSLATE
。