Mysql选择concat,其中某些字段为null

时间:2018-03-16 22:14:04

标签: mysql

我正在两个表之间进行连接,以将标准值推送到记录描述中。问题是某些记录没有部分/全部标准,整个字符串都失败了:

Select Concat(Description,'<br><br>',C.CritieraNameA,': ',T.CriteriaValueA,'<br><br>',C.CriteriaNameB,': ',T.CriteriaValueB) From Records T Inner Join Company C On T.CompanyID=C.ID

所以我最终得到了

专营乳制品的超市

营业时间:上午8点至下午5点
信用卡:是

飘了

运行时间:太长
格式:DVD

这个工作正常,直到我找到

的记录
  • 公司表中没有CriteriaTypeA或CriteriaTypeB
  • 记录表中没有CriteriaValueA或CriteriaValueB

当它没有在记录中找到CriteriaValue时,有没有办法选择这样做:

专营肉类的超市

时间:
信用卡:是

或公司中的CriteriaName:

保时捷

类型:跑车

它不会简单地返回一个空结果?

3 个答案:

答案 0 :(得分:1)

在这种情况下,

IfNull可能很有用 - 它会检测到null并将其替换为您提供的值。

IFNULL(CriteriaTypeA , "not given")

答案 1 :(得分:1)

Concat_WS救援:

Concat_WS('',C.CriteriaTypeA,': ',T.CriteriaValue)

答案 2 :(得分:0)

这应该这样做:

Select Concat(
    Description,
    Coalesce(Concat('<br><br>',C.CritieraNameA,': ',T.CriteriaValueA), ''),
    Coalesce(Concat('<br><br>',C.CriteriaNameB,': ',T.CriteriaValueB), '')
) 
From Records T
Inner Join Company C
On T.CompanyID=C.ID

但正如我在评论中所写:不要在SQL中实现输出逻辑。