替换 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
。
我想在 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
。