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

Replacing multiple characters in a CASE statement, SQL

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

谢谢!

在这种情况下,CASE-WHEN 结构是不必要的。你只需要一个质量REPLACE,它看起来像这样:

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

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