SQL Server中REPLACE多参数报错及字符串后缀去除实现问题
错误原因
SQL Server的REPLACE函数仅支持3个入参(原字符串、待替换子串、替换目标值),你一次性传入4个参数自然会触发语法报错,且嵌套REPLACE的写法适配性较差,仅能覆盖指定后缀场景。
推荐实现方案(适配任意后缀场景)
优先通过定位第一个.的位置截取前缀,不管后面跟的是.1/.2还是其他格式的后缀都能正常处理:
SELECT CASE -- 存在点号时截取点前内容 WHEN CHARINDEX('.', ColumnA) > 0 THEN LEFT(ColumnA, CHARINDEX('.', ColumnA) - 1) -- 无后缀直接返回原值 ELSE ColumnA END AS ColumnB FROM 你的实际表名
仅需替换.1/.2的临时方案
如果确定仅需要处理这两个固定后缀,也可以嵌套调用REPLACE实现:
SELECT REPLACE(REPLACE(ColumnA, '.1', ''), '.2', '') AS ColumnB FROM 你的实际表名
注意该方案存在局限性:如果遇到类似C20.12的取值会被误处理为C202,不推荐通用场景使用。
内容的提问来源于stack exchange,提问作者Salman81
相关产品推荐
相关产品推荐

