mysql中CONCAT()函数结果为null的问题解决

 更新时间:2025年09月07日 10:01:10   作者:花花无缺  
本文主要介绍了因SQL中的CONCAT()函数导致的数据漏查问题,下面就拉具体介绍一下问题的原因及解决方法,感兴趣的可以了解一下

背景 :发现数据漏更新,排查时候看代码一直没问题,因为看到在代码里用了 Optional.ofNullable(value).orElse(''),不该漏掉,后来发现在sql里面查询的时候不是用的代码里已拼好的字符串,而是用concat()又拼了一遍,所以其中任一字符串为null的数据都没查到。

SQL 中使用 CONCAT(str1, str2) 时,如果 str1str2NULL 或空串('')会发生什么

1、SQL 中CONCAT()函数的行为(以 MySQL 为例)

规则总结:

情况结果说明
CONCAT('hello', 'world')'helloworld'正常拼接
CONCAT('hello', '')'hello'空串不影响
CONCAT('hello', NULL)NULL只要有一个是 NULL,结果就是 NULL ❌
CONCAT(NULL, 'world')NULL同上
CONCAT(NULL, NULL)NULL同上

⚠️ 在标准 SQL 和 MySQL 中,CONCAT(NULL, ...) 的结果是 NULL。

2、CONCAT()的其他相关使用场景

  • 模糊查询
CONCAT('%', #{device}, '%')
  • 路径匹配
--判断某个字段是否“以 `prefix` 开头,并且 `prefix` 后面是 `/` 或字符串结尾
REGEXP CONCAT('^', #{prefix}, '(/|$)')

3、如何避免出现null,导致漏查漏改数据

-- 1.使用 COALESCE:将 NULL 转为空串
SELECT CONCAT(COALESCE(str1, ''), COALESCE(str2, '')) AS result
FROM your_table;

-- 2.使用 IFNULL:将 NULL 转为空串
SELECT CONCAT(IFNULL(str1, ''), IFNULL(str2, '')) AS result
FROM your_table;

-- 3.使用`CONCAT_WS(separator, str1, str2, ...)` 表示“用分隔符拼接字符串”,会自动跳过 NULL 值。
SELECT CONCAT_WS('', 'hello', NULL, 'world') AS result; -- 'helloworld'

到此这篇关于mysql中CONCAT()函数结果为null的问题解决的文章就介绍到这了,更多相关mysql中CONCAT()结果为null内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • MySQL 驱动中虚引用 GC 耗时优化与源码分析

    MySQL 驱动中虚引用 GC 耗时优化与源码分析

    这篇文章主要为大家介绍了MySQL 驱动中虚引用 GC 耗时优化与源码分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • 教你如何6秒钟往MySQL插入100万条数据的实现

    教你如何6秒钟往MySQL插入100万条数据的实现

    这篇文章主要介绍了教你如何6秒钟往MySQL插入100万条数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • mysql中合并两个字段的方法分享

    mysql中合并两个字段的方法分享

    mysql中怎么合并两个字段为一个字段呢?试了好多方法,结果还是不是我想要的
    2012-08-08
  • MySQL建表设置默认值/取值范围的操作代码

    MySQL建表设置默认值/取值范围的操作代码

    这篇文章主要介绍了MySQL建表设置默认值/取值范围的操作代码,文中给大家提到了MySQL创建表时字符串的默认值,本文给大家讲解的非常详细,需要的朋友可以参考下
    2022-11-11
  • 深入浅析MySQL Explain

    深入浅析MySQL Explain

    这篇文章主要介绍了MySQL Explain详解,expain出来的信息有10列,分别是id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra,本文对每一字段进行逐一解释,需要的朋友可以参考下
    2022-07-07
  • Mysql主从复制与读写分离图文详解

    Mysql主从复制与读写分离图文详解

    这篇文章主要给大家介绍了关于Mysql主从复制与读写分离的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Mysql多主一从数据备份的方法教程

    Mysql多主一从数据备份的方法教程

    这篇文章主要给大家介绍了关于Mysql多主一从数据备份的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧
    2018-12-12
  • 在IDEA的maven项目中连接并使用MySQL8.0的方法教程

    在IDEA的maven项目中连接并使用MySQL8.0的方法教程

    这篇文章主要介绍了如何在IDEA的maven项目中连接并使用MySQL8.0,本文分步骤给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • MySQL中关于datetime、date、time、str之间的转化与比较

    MySQL中关于datetime、date、time、str之间的转化与比较

    这篇文章主要介绍了MySQL中关于datetime、date、time、str之间的转化与比较,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • 一文详细分析MySQL中的Text类型

    一文详细分析MySQL中的Text类型

    这篇文章主要介绍了MySQL TEXT类型特点、适用场景及使用注意事项的相关资料,TEXT类型是一种特殊的字符串类型,包括TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-05-05

最新评论