用于SQL Server的CONCAT_WS()
发布时间:2020-05-28 14:54:45 所属栏目: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 ||----|--
|
如何在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.老实说,我认为这是一个更好的选择,但无论如何都应该很容易改变. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
