替换CASE语句中的多个字符,SQL
问题描述:
我想在SQL中使用CASE语句更改列中的一串字符。 代码如下替换CASE语句中的多个字符,SQL
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)]
的问题是,如果一个名称有不同的种类(如O和a)的多个字符,它只会只更换其中的一个(在case语句中的第一个那就是ø)。 有没有办法一次性替换CASE语句中的所有列出的字符?
谢谢!
答
在这种情况下,CASE-WHEN
构造是肤浅的。你只需要一个质量REPLACE
,它看起来像这样:
REPLACE(
REPLACE(
REPLACE(
REPLACE([EmpName], 'æ', 'ae'),
'ø', 'oe'),
'å', 'aa'),
'-', '')
不幸的是,替换字符串有不同的尺寸比原来的。所以你不能在这里使用TRANSLATE
。
+0
谢谢,它工作:) –
您使用MySQL,Oracle或MS SQL Server吗?不要标记不涉及的产品。 – jarlh
跳过大小写表达式,嵌套替换就可以了。 – jarlh
我可以使用任何这些,这就是为什么我做到了:) 它工作顺便! 非常感谢你!!!!! –