如果想替換字串中的值,我們習慣在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語法又可以讓程式可閱讀性又提升了。