ed-*_*-ta 20 mysql null concat
如果我有这个 - tadd 是Address
表:
CONCAT(tadd.street_number, ' ',
tadd.street_name,', ',
tadd.apt_number,', ',
tadd.city,', ',
tadd.postal_code,', ',
tadd.country) AS 'Address'
Run Code Online (Sandbox Code Playgroud)
如果 apt_number 不存在,有没有办法排除它?
我在想:
WHERE tadd.apt_number IS NOT NULL
Run Code Online (Sandbox Code Playgroud)
但它只会返回那些带有apt_number
, 的行,即使某些东西有效,我该如何处理那个额外的逗号。
如果是重复的,请在评论中发布链接。
ype*_*eᵀᴹ 23
如果要跳过NULL
值(但不是空字符串),可以使用CONCAT_WS()
函数:
CONCAT_WS( ', ', -- Separator
CONCAT_WS(' ', tadd.street_number, tadd.street_name),
tadd.apt_number, tadd.city,
tadd.postal_code, tadd.country
) AS Address
Run Code Online (Sandbox Code Playgroud)
从文档:
CONCAT_WS(separator,str1,str2,...)
CONCAT_WS()
代表 Concatenate With Separator,是CONCAT()
. 第一个参数是其余参数的分隔符。在要连接的字符串之间添加分隔符。分隔符可以是字符串,其余参数也可以。如果分隔符为NULL
,则结果为NULL
。
CONCAT_WS()
不跳过空字符串。但是,它会跳过NULL
分隔符参数之后的任何值。
通过将NULL
空字符串包装在COALESCE
or 中来转换空字符串中的值IFNULL
:
SELECT
CONCAT(IFNULL(tadd.street_number,''),
' ',IFNULL(tadd.street_name,''),
', ',IFNULL(tadd.apt_number,''),
', ',IFNULL(tadd.city,''),
', ',IFNULL(tadd.postal_code,''),
', ',IFNULL(tadd.country,'')) AS 'Address'
FROM db.tbl;
Run Code Online (Sandbox Code Playgroud)
SELECT
CONCAT(COALESCE(tadd.street_number,''),
' ',COALESCE(tadd.street_name,''),
', ',COALESCE(tadd.apt_number,''),
', ',COALESCE(tadd.city,''),
', ',COALESCE(tadd.postal_code,''),
', ',COALESCE(tadd.country,'')) AS 'Address'
FROM db.tbl
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
65527 次 |
最近记录: |