我对我的SQL有疑问。
请查询
select a.id, a.phone, b.list,c.ctitle,l,
if(last_id!=0 and date(activity)=date(start_date),
CONCAT(ag.firstname,' ‘,ag.lastname) ,’')
from table name a
left join <all other tables>
where a.cid = '100' and a.date between '2013-05-01' and '2015-06-14';
输出显示正确。目前我得到名字和姓氏。但对于某些条目,名字和姓氏为空。我需要修改查询,以便我可以打印列的非空值if(last_id!= 0和date(activity)= date(start_date),CONCAT(ag.firstname,&#39;' ,ag.lastname),'&#39;)即同一查询,不包括名字和姓氏的空条目。我试过IS NOT NULL但没有工作。
请帮忙
答案 0 :(得分:4)
如果我理解正确,那么NULL
就会出现问题。一个简单的解决方案是使用concat_ws()
:
concat_ws(' ', ag.firstname, ag.lastname)
如果任一名称为NULL
,则在连接中忽略它。
答案 1 :(得分:0)
我想你可以在这里找到答案:MySQL CONCAT returns NULL if any field contain NULL
你也可以使用IFNull语法:
CONCAT(IFNull(ag.firstname,''),IFNull(ag.lastname,''))