SQL Server 2016以後基本沒怎麼關注過新版本的T-SQL語法更新,今天看了一下,發現了幾個字符串相關的函數更新
CONCAT_WS
CONCAT_WS是CONCAT的延伸版,以前如果把字段拼起來不是要自己去指定每個字段中間加分割分,例如CONCAT(字段1,',',字段2,',’,字段3),用CONCAT_WS就可以直接指定分隔符一次就夠了,例如
SELECT CONCAT_WS('|~|',NULL,1,NULL,2,3,4)
結果
STRING_AGG
做報表的時候經常需要乾的事情就是要把結果集中某一列用逗號分割拼起來,一般做法都是用FOR XML PATH,現在終於有了一個函數簡單完成這個事情,就是STRING_AGG。這個是2017以後纔有的。
SELECT STRING_AGG (CONVERT(NVARCHAR(max),COL1), ',') WITHIN GROUP(ORDER BY COL1) AS csv FROM ( SELECT 1 COL1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 ) T
結果
STRING_ESCAPE
2016以後纔有一個函數,用於做字符串轉義,目前支持JSON類型的字符串轉移,例如 \ 這樣子的斜杆
SELECT STRING_ESCAPE('\ / \\ " ', 'json') AS escapedText;
結果
TRANSLATE
類似於多個REPLACE嵌套組成的公式,例如下面的REPLACE公式就可以被TRANSLATE替換
SELECT REPLACE ( REPLACE ( REPLACE ( REPLACE ( '2*[3+4]/{7-2}', '[', '(' ), ']', ')' ), '{', '(' ), '}', ')' ); SELECT TRANSLATE('2*[3+4]/{7-2}', '[]{}', '()()');
結果