用于SQL Server的CONCAT_WS()
发布时间:2020-12-12 06:47:20 所属栏目:MsSql教程 来源:网络整理
导读:如何在SQL Server中模拟 MySQL的 CONCAT_WS()功能? 此函数类似于 CONCAT() function in SQL Server 2012,只是它在非NULL项之间添加了一个分隔符: SELECT id,CONCAT_WS('; ',a,b,c,d) AS barFROM fooORDER BY id; | ID | BAR ||----|------------|| 1 | a; b
如何在SQL Server中模拟
MySQL的
CONCAT_WS()功能?
此函数类似于 SELECT id,CONCAT_WS('; ',a,b,c,d) AS bar FROM foo ORDER BY id; | ID | BAR | |----|------------| | 1 | a; b; c; d | | 2 | b; d | | 3 | a; d | | 4 | | (MySQL Fiddle) 解决方法我们可以使用几个技巧:>要跳过NULL值:COALESCE() 他是working example: CREATE TABLE foo ( id INT IDENTITY(1,1) NOT NULL,a VARCHAR(50),b VARCHAR(50),c VARCHAR(50),d VARCHAR(50),PRIMARY KEY (id) ); INSERT INTO foo (a,d) VALUES ('a','b','c','d'); INSERT INTO foo (a,d) VALUES (NULL,NULL,NULL); SELECT id,STUFF( COALESCE('; ' + a,'') + COALESCE('; ' + b,'') + COALESCE('; ' + c,'') + COALESCE('; ' + d,''),1,2,'') AS bar FROM foo ORDER BY id | ID | BAR | |----|------------| | 1 | a; b; c; d | | 2 | b; d | | 3 | a; d | | 4 | (null) | STUFF(…,”)的目的是删除初始分隔符(在我们的例子中,2是分隔符长度). 这应该适用于SQL Server 2005(可能还有早期版本). 注意:与原始CONCAT_WS()不同,当所有项都为NULL时,我们的版本返回NULL.老实说,我认为这是一个更好的选择,但无论如何都应该很容易改变. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |