响应为空时隐藏分隔符

Hide seperator when response is empty

我正在尝试从数据库中 select 我的客户的地址、邮政编码、城市和国家/地区。我想在一栏中显示这些栏。所以我使用 CONCAT_WS 到 select 我客户的详细地址:

SELECT CONCAT_WS(', ', address, zip, city, country) AS address2 FROM customers

当我的 table 中有数据时,我得到正确的响应:

Street, 1234, City, Belgium

没有数据时,语句只显示逗号:

, , , Belgium

我想隐藏这些逗号s if there is no data. Does someone know how I can hide these comma吗?

CONCAT_WS() 会忽略 NULL,但不会忽略像 '' 这样的空字符串。这些在 MySQL.

中不是一回事

要解决此问题,您可以使用 NULLIF() function。如果它的两个参数相等,则此 returns NULL。

SELECT CONCAT_WS(', ', 
    NULLIF(address, ''), 
    NULLIF(zip, ''), 
    NULLIF(city, ''), 
    NULLIF(country, '')
  ) AS address2 FROM customers