首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多列上的ifnull ()

多列上的ifnull ()
EN

Stack Overflow用户
提问于 2014-06-16 07:30:46
回答 3查看 9.6K关注 0票数 2

我有两个表,并为它们创建了左联接查询。假设它们是表A和表B。

当我启动查询时,如果表B包含表A中的键,则根据表A显示记录。如果键不匹配,则在所有列上显示null。

如果我必须替换null,我使用mysql的ifnull函数,但是有更多的列要应用ifnull,有什么方法可以同时将这个函数应用于所有列吗?意味着不需要在每个单独的列上应用

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-16 07:41:31

不,您需要对每个列分别应用IFNULL

但是,如果您有一个稍微不同的要求,即从多个列显示第一个非空列,如果它们都为空,则显示默认值,您可以这样使用COALESCE函数:

代码语言:javascript
复制
select coalesce(col1,col2,col3,0)
from tbl

这方面的问题是,它将返回结果中的单个列,而不是与col1col2col3对应的多列。因此,只要您希望在结果集中有多个列,就需要在每列的基础上执行空处理。

票数 9
EN

Stack Overflow用户

发布于 2014-06-16 07:36:36

不,不可能一次对多个列使用IFNULL,您必须在每一列上分别使用:

代码语言:javascript
复制
SELECT a.id, a.somecol, IFNULL(b.col1, 0) col1, IFNULL(b.col2, "") col2, ...
FROM Table1 AS a
LEFT JOIN Table2 AS b ON <some condition>
票数 0
EN

Stack Overflow用户

发布于 2018-06-12 17:49:52

您可以连接您的列,例如:

代码语言:javascript
复制
SELECT CONCAT(col1, "|", col2, "|", col3, "|", col4) AS ConcatenatedString;

然后用您决定使用的任何拆分字符拆分字符串。在这种情况下,一个管道“\”

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24238604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档