【问题标题】:Replace NULL with custom text inside the concatenation function SQL将 NULL 替换为连接函数 SQL 中的自定义文本
【发布时间】:2021-05-13 13:54:57
【问题描述】:

我想把属于同一个id的输出拼接起来,所以我用了下面这个函数,但是我也想用自定义文本替换空值,怎么做才对呢?

GROUP_CONCAT(IFNULL(ps_state.name, 'No-State') SEPARATOR ', ')

所有代码(如果需要):

SELECT DISTINCT ps_customer.id_customer AS CustomersId, ps_customer.email AS CustomersName, GROUP_CONCAT(IFNULL(ps_state.name, 'No') SEPARATOR ', ') AS StatesName, 
GROUP_CONCAT(ps_country_lang.name SEPARATOR ', ') AS CountryName 
FROM ps_customer
INNER JOIN ps_address ON ps_customer.id_customer=ps_address.id_customer
LEFT JOIN ps_state ON ps_state.id_state=ps_address.id_state
INNER JOIN ps_country_lang ON ps_country_lang.id_country=ps_address.id_country
WHERE ps_country_lang.id_lang=1
GROUP BY ps_customer.id_customer, ps_state.name

【问题讨论】:

    标签: sql null concatenation


    【解决方案1】:

    您的代码看起来基本正确,但我会使用 coalesce():

    GROUP_CONCAT(coalesce(ps_state.name, 'No-State') SEPARATOR ', ')
    

    如果有您想要或期望的订购,您可能还想在GROUP_CONCAT() 内订购。

    【讨论】:

    • 确实,错误是不同的。都是关于 GROUP BY,我不得不从那里删除 ps_state.name
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-24
    • 2016-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-02
    • 2020-07-19
    相关资源
    最近更新 更多