[SQL Server][T

如果想替换字符串中的值,我们习惯在SQL Server用上REPLACE()函数,但碰上要换多个字符串pattern时,就要用巢状结构使用REPLACE()函数,SQL程序写起来就比较不好阅读,Oracle很早就有TRANSLATE()函数可以简化语法,现在SQL Server 2017也开始支持了TRANSLATE(),今晚我们继续吃语法糖(TRANSLATE)。



多个字符串pattern

巢状结构使用REPLACE函数

--SQL Server 2017以前
SELECT  REPLACE(REPLACE(REPLACE('1:2:3','1', N'Ⅰ'),'2',N'Ⅱ'),'3',N'Ⅲ') as new_value

TRANSLATE第二组及第三组参数要依序输入对应要替代的内容:

--SQL Server 2017
SELECT  TRANSLATE(N'1:2:3',N'123', N'ⅠⅡⅢ') as new_value

翻译字典式的字符串置换。

两个方法都可以实现,新的SQL语法又可以让程序可阅读性又提升了。


参考

TRANSLATE (Transact-SQL)

REPLACE(Teansact-SQL)