mysql之使用 SQL concat 和 coalesce 在值为 null 时显示

lyj 阅读:58 2025-04-02 23:11:03 评论:0

我有下表。 city, state, zipcode 都是varchar类型,可以为NULL。

MyContacts 
-id (int PK) 
-city (varchar null) 
-state (varchar null) 
-zipcode (varchar null) 

我想返回格式化为单个值的城市、州和邮政编码,如下所示:

Seattle WA 98423 if all are not NULL 
Seattle WA if zip is NULL 
Seattle 98423 if state is NULL 
WA 98423 if city is NULL 
Seattle if state and zip is NULL 
WA if city and zip is NULL 
98423 if city and state is NULL 
NULL if all of them are NULL 

我一直在尝试类似以下的方法,但我认为我做错了。谢谢

SELECT COALESCE(CONCAT(city," ",state," ",zipcode),CONCAT(city," ",states),zipcode) AS location 

请您参考如下方法:

CASE WHEN COALESCE(city,state,zip_code) IS NOT NULL 
THEN 
    TRIM(REPLACE(CONCAT(IFNULL(city,""), 
                   " ", 
                   IFNULL(state,""), 
                   " ", 
                   IFNULL(zip code,"")), 
            "  "," ")) 
ELSE 
    NULL 
END 

CONCAT_WS 已经有效地处理了 NULL,因此我们不需要在其中进行 NULL 检查。

CASE WHEN COALESCE(city,state,zip_code) IS NOT NULL 
THEN 
    CONCAT_WS(' ',city, 
                  state, 
                  zipcode)  
ELSE 
    NULL 
END AS location 


标签:mysql
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号