1

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

谢谢!

4

1 回答 1

3

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

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

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

于 2017-10-11T09:50:59.537 回答