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

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

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

如果任何列中的任何一个为空白怎么办。仍将添加逗号。比如你好,晚安。

有没有办法说如果 Col 是空的然后忽略它?(这是 MySQL)

4

2 回答 2

6

如果任何一个参数是 ,函数将CONCAT_WS忽略NULL值并且不生成分隔符NULL

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

SELECT CONCAT_WS(',', NULLIF(Col1, ''), NULLIF(Col2, ''), NULLIF(Col3, '') ) AS combined 
FROM table_name
于 2016-04-01T11:50:07.287 回答
3

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

您可以使用以下NULLIF()功能:

SELECT CONCAT_WS(',', NULLIF(Col1, ''), NULLIF(Col2, ''), NULLIF(Col3, '')
                ) AS combined
FROM table_name;
于 2016-04-01T11:49:58.297 回答