sql-server - 在 T-SQL 中对字符范围使用通配符
问题描述
我目前正在使用REPLACE
替换以下可能在客户名称中找到的字符。但是,这样做非常乏味。
有谁知道是否有办法使用列表格式来做到这一点,例如,像这样的通配符:LIKE ['.',',']
而不是每次都写替换?
REPLACE(REPLACE(REPLACE(REPLACE(dname,'.',''),'`',''),'''',''),' ',' ')))
解决方案
我们不知道版本,但如果你只有 2016+TRANSLATE
可能在这里工作得很好:
DECLARE @ReplaceChars varchar(50) = '.''`(){}[]!"£$%^&*-=_+';
SELECT REPLACE(REPLACE(TRANSLATE(YourColumn, @ReplaceChars, REPLICATE(LEFT(@ReplaceChars, 1), LEN(@ReplaceChars)),LEFT(@ReplaceChars,1),''),' ',' ')
FROM ...
您仍然需要REPLACE
在最左边使用字符,以及双空格。