如果列为空,如何使用CONCAT_WS停止添加逗号

时间:2016-04-01 11:45:35

标签: mysql concatenation concat-ws

SELECT CONCAT_WS(',', Col1, Col2, Col3 ) AS combined FROM table_name

目前,如果我有字段Col1 =' hello',则Col2 =' Bye',Col2 =' Goodnight'

上面的select语句会返回hello,Bye,Goodnight,这很好。

如果任何Cols空白,该怎么办?还会添加一个逗号。像你好,晚安。

有没有办法说Col是否为空然后忽略它? (这是MySQL)

2 个答案:

答案 0 :(得分:2)

CONCAT_WS()忽略NULL个值(在第一个参数之后)。因此,您的空白值必须为空字符串,而不是NULL

您可以使用NULLIF()功能:

SELECT CONCAT_WS(',', NULLIF(Col1, ''), NULLIF(Col2, ''), NULLIF(Col3, '')
                ) AS combined
FROM table_name;

答案 1 :(得分:1)

函数CONCAT_WS会忽略NULL个值,如果其任一参数为NULL,则不会生成分隔符。

对于空的,即等于''的值,您可以使用NULLIF

SELECT CONCAT_WS(',', NULLIF(Col1, ''), NULLIF(Col2, ''), NULLIF(Col3, '') ) AS combined 
FROM table_name