【问题标题】:concating fields with null values连接具有空值的字段
【发布时间】:2011-11-23 11:23:00
【问题描述】:

首先要说“是的,我知道我的表不符合 1NF。” 我正在处理旧的东西,无法改变它。 所以拜托了,请不要这样说。

现在,问题来了:

select title,address,zip,city, concat(telefon1,',',telefon2,',',telefon3) as phone

问题在于,直到concat 中的一列为空或为空之前,它都可以正常工作。 如果是,那么我会得到电话列的Null 结果。 如果这三个都有值,那么一切都会按预期进行。

我该如何克服这个问题?

【问题讨论】:

    标签: mysql concat


    【解决方案1】:

    试试这个:

    SELECT title,address,zip,city,CONCAT(
        COALESCE(telefon1,''), ',',
        COALESCE(telefon2,''), ',',
        COALESCE(telefon3,'')) as phone
    

    【讨论】:

    • 谢谢,几分钟后将被选为正确答案。即使由于ifnull 也可以,它比你的解决方案慢一点。
    • @Bohemian:谢谢,像你这样的伟大的好评论总是被接受:)
    【解决方案2】:

    将每个电话列包装在ifnull(...,'') 中以将null 变为空白。

    select ..., 
        concat(ifnull(telefon1,''),',',ifnull(telefon2,''),',',ifnull(telefon3,'')) as phone
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-28
      • 2010-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多