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