我有两个表,我已经为它们创建了左连接查询。 假设它们是表A和表B.
当我触发查询时,如果表B包含表A中存在的键,则根据它显示记录。如果key不匹配,则在所有列上显示null
如果我必须替换null我使用mysql的ifnull
函数,但还有更多的列要应用ifnull
,有没有什么方法可以立即在所有列上应用此函数?意味着无需在每个列上申请
答案 0 :(得分:1)
不,您需要分别对每列应用IFNULL
。
但是,如果您的要求略有不同,即,要显示多个列中的第一个非空列,并显示默认值(如果它们都为空),则可以使用COALESCE
函数像这样:
select coalesce(col1,col2,col3,0)
from tbl
问题在于它会在结果中返回单个列,而不是与col1
,col2
和col3
对应的多个列。因此,只要您希望在结果集中包含多个列,就需要按列进行空值处理。
答案 1 :(得分:0)
不,一次无法在多个列上使用IFNULL
,您必须分别在每个列上执行此操作:
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>
答案 2 :(得分:0)
您可以连接列,例如:
SELECT CONCAT(col1, "|", col2, "|", col3, "|", col4) AS ConcatenatedString;
然后用您决定使用的任何分割字符拆分字符串。在这种情况下,管道“|”