如果列为空,如何停止使用 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
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