[SQL Server][T-SQL]TRANSLATE字串取代功能強化(SQL Server 2017)

如果想替換字串中的值,我們習慣在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)