SQL Server ->> 字符串相關函數

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}', '[]{}', '()()');

 

結果

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章