在下面的代码中,我通过连接地址的各个部分来创建一个Address字段.
但是,如果例如address2
为空,则尾部,
仍将连接到Address.
这意味着如果所有字段都是空的,我最终会得到结果,,,,
.
如果address1
是"House Number"
,其他一切都是空的,我最终会House Number,,,,
.
CONCAT( COALESCE(address1,'') , ', ' ,
COALESCE(address2,'') , ', ' ,
COALESCE(address3,'') , ', ' ,
COALESCE(city,'') , ', ' ,
COALESCE(zip, '')
) AS Address,
Run Code Online (Sandbox Code Playgroud)
只有在地址部分的内容不为空时才有条件地在地址部分之间放置逗号.
如某些东西(伪代码) IF(address1) is NULL use '' ELSE use ','
谢谢.
小智 45
CONCAT_WS(', ',
IF(LENGTH(`address1`),`address1`,NULL),
IF(LENGTH(`address2`),`address2`,NULL),
IF(LENGTH(`address3`),`address3`,NULL),
IF(LENGTH(`city`),`city`,NULL),
IF(LENGTH(`zip`),`zip`,NULL)
)
Run Code Online (Sandbox Code Playgroud)
Bou*_*egh 12
如下所述:如何concat_ws多个字段并删除空插槽的重复分隔符
这将清除空字符串以及NULL值.
CONCAT_WS(", ", NULLIF(address1, ""), NULLIF(address2, ""), NULLIF(address3, ""), NULLIF(city, ""), NULLIF(zip, ""))
Run Code Online (Sandbox Code Playgroud)
按照 Mat 的说法使用CONCAT_WS
是一个非常好的主意,但我想我应该用不同的方式来做,用混乱的IF()
语句:
CONCAT( COALESCE(address1,''), IF(LENGTH(address1), ', ', ''),
COALESCE(address2,''), IF(LENGTH(address2), ', ', ''),
COALESCE(address3,''), IF(LENGTH(address3), ', ', ''),
COALESCE(city,''), IF(LENGTH(city), ', ', ''),
COALESCE(zip,''), IF(LENGTH(address1), ', ', ''),
) AS Address,
Run Code Online (Sandbox Code Playgroud)
sIF()
检查字段是否有长度,如果有则返回逗号。否则,它返回一个空字符串。
尝试与MAKE_SET
SELECT MAKE_SET(11111,`address1`,`address2`,`address3`,`city`,`zip`) AS Address
Run Code Online (Sandbox Code Playgroud)
它将返回一个字符串,其中所有 NOT NULL 值均由,
归档时间: |
|
查看次数: |
22403 次 |
最近记录: |