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

How do I stop a comma being added using CONCAT_WS if column is empty

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

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

上面的 select 语句会 return 你好,再见,晚安,这很好。

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

有没有办法说如果 Col 为空则忽略它? (这是MySQL)

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

您可以使用NULLIF()函数:

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

函数 CONCAT_WS 忽略 NULL 值,并且如果它的任一参数是 NULL.

则不生成分隔符

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

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