gpt4 book ai didi

Mysql replace函数返回null

转载 作者:搜寻专家 更新时间:2023-10-30 23:16:23 25 4
gpt4 key购买 nike

我有一个表 activity_types,其中包含事件的文本,例如
新项目已分配给名为 {project} 的 {user}
{client} 在 {project} 上发布了新的讨论
项目 {project} 已被 {user} 关闭
{client} 在 {project} 上批准了草稿
等等

我有另一个表,其中填充了这些文本的 ID。

现在我的要求是通过将 {} 中的文本替换为它们的实际值来获取这些内容,例如 {client} 应替换为客户名称,{project} 应替换为项目名称。

我试过使用嵌套替换 mysql 函数,但它返回空字符串。这是我的查询

SELECT      REPLACE(REPLACE(REPLACE(att.type_text, '{project}', p.project_business_name), '{user}', u.user_fullname), '{client}', c.client_name) AS activity, a.*
FROM activities a
LEFT JOIN activity_types AS att ON att.type_id = a.activity_type
LEFT JOIN users u ON u.user_id = a.activity_user AND a.activity_user IS NOT NULL
LEFT JOIN projects p ON p.project_id = a.activity_project AND p.project_is_removed = '0'
LEFT JOIN clients c ON c.client_id = a.activity_client AND a.activity_client IS NOT NULL;

问题是,如果我用静态文本替换 c.client_name,它工作正常,但是当我用 c.client_name 替换静态字符串时,它在没有 {client} 的事件中返回 null。猜猜我哪里做错了吗?

最佳答案

尝试在列上添加 COALESCE

...,COALESCE(c.client_name, ''),

基本上,如果列 (c.client_name) 为null,它将被替换为空字符串

发生的情况是,当字符串的一部分被替换为 null 时,整个字符串变为 null

关于Mysql replace函数返回null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13014217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com