替换CASE语句中的多个字符,SQL

时间:2017-10-11 09:43:02

标签: sql management-studio-express

我想在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语句中的每个列出的字符?

谢谢!

1 个答案:

答案 0 :(得分:3)

在这种情况下,CASE-WHEN构造是不必要的。您只需要一个质量REPLACE,如下所示:

REPLACE(
  REPLACE(
    REPLACE(
      REPLACE([EmpName], 'æ', 'ae'),
    'ø', 'oe'),
  'å', 'aa'),
'-', '')

不幸的是,替换字符串的大小与原始字符串不同。所以你不能在这里使用TRANSLATE