MySQL - 仅在不为空时连接
Posted
技术标签:
【中文标题】MySQL - 仅在不为空时连接【英文标题】:MySQL - Concat only when not empty 【发布时间】:2022-01-18 04:51:27 【问题描述】:当我从数据库返回图像时,我试图添加指向我的图像的链接,但我不想在图像为空时添加它。我尝试了CONCAT
和CONCAT_WS
,但没有成功
这两个都不起作用:
SELECT id, name_en as name, CONCAT_WS("http://website.com/", image) as image FROM businesses
SELECT id, name_en as name, CONCAT("http://website.com/", image) as image FROM businesses
【问题讨论】:
coalesce(object,'')
必须将 null 替换为空字符串。 Coalese 采用系列中的第一个非空值。 dev.mysql.com/doc/refman/8.0/en/…
【参考方案1】:
你可以使用ÌF
flowcoltrol,`判断图片是否为NULL,如果不是则添加url
SELECT id, name_en as name, IF(image IS NOT NULL, CONCAT("http://website.com/", image),"") as image
FROM businesses
【讨论】:
这就像一个魅力。我可以添加另一个查询来支持空字符串而不仅仅是空字符串吗?。 使用image IS NOT NULL OR image <> ''
非常感谢。我刚刚检查了你的账户,你看起来在这方面做得很好。你能推荐我一本关于数据库的书吗?我觉得它很有趣,很想了解更多。提前致谢。
先看看这里的链接***.com/tags/mysql/info 有视频教程和初学者 w3school 和其他很多s和很多,但是看看这个标签或 sql 标签并阅读所问的内容和答案,他们还提供了很好的解释和流行语来查找手册也是一个很好的起点【参考方案2】:
您正在寻找的是 COALESCE() 函数:下面的文档链接。它返回系列中的第一个非空值。所以本质上我们将 Null 替换为一个空字符串。
SELECT id, name_en as name, CONCAT("http://website.com/", coalesce(image,'')) as image
FROM businesses
https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html#function_coalesce
【讨论】:
以上是关于MySQL - 仅在不为空时连接的主要内容,如果未能解决你的问题,请参考以下文章