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