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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • SQL中字符串截取函数图文教程

    SQL中字符串截取函数图文教程

    在SQL的实际用途中,经常会碰到需要对查询结果值需要做字段的一些截取,下面这篇文章主要给大家介绍了关于SQL中字符串截取函数的相关资料,需要的朋友可以参考下
    2023-01-01
  • MySQL8.0.20压缩版本安装教程图文详解

    MySQL8.0.20压缩版本安装教程图文详解

    这篇文章主要介绍了MySQL8.0.20压缩版本安装教程,需本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,要的朋友可以参考下
    2020-08-08
  • Mysql占用过高CPU时的优化手段(必看)

    Mysql占用过高CPU时的优化手段(必看)

    下面小编就为大家带来一篇Mysql占用过高CPU时的优化手段(必看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • sql中替换函数replace()用法与实例总结

    sql中替换函数replace()用法与实例总结

    这篇文章主要给大家介绍了关于sql中替换函数replace()用法与实例的相关资料,在SQL中REPLACE函数用于替换一个字符串中的一部分为另一个字符串,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-02-02
  • MySQL索引失效的八大常见场景及解决方法

    MySQL索引失效的八大常见场景及解决方法

    作为一名Java开发工程师,在处理高并发业务时,MySQL索引失效是导致系统性能下降的"隐形杀手",本文将结合实际案例,深度剖析索引失效的8大常见场景,并提供Java代码层面的优化建议,帮助开发者避开性能陷阱,需要的朋友可以参考下
    2025-05-05
  • MySQL5.5.21安装配置教程(win7)

    MySQL5.5.21安装配置教程(win7)

    这篇文章主要以图文结合的方式介绍了Win7系统下安装MySQL5.5.21的具体过程,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • 为mysql数据库添加添加事务处理的方法

    为mysql数据库添加添加事务处理的方法

    开始首先说明一下,mysql数据库默认的数据库引擎是MyISAM,是不支持事务的,单数如果你添加了数据执行语句是不会出错的,单数不管用,即便是回滚事务,记录也是插入进去了,所有首先我们要做的第一步是更改数据库引擎
    2011-07-07
  • MySQL 字符串拆分实例(无分隔符的字符串截取)

    MySQL 字符串拆分实例(无分隔符的字符串截取)

    这篇文章主要介绍了MySQL 字符串拆分实例(无分隔符的字符串截取),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • MySQL如何开启远程连接权限

    MySQL如何开启远程连接权限

    这篇文章主要介绍了MySQL如何开启远程连接权限问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-09-09
  • Mysql 5.7.18 解压版下载安装及启动mysql服务的图文详解

    Mysql 5.7.18 解压版下载安装及启动mysql服务的图文详解

    这篇文章主要介绍了Mysql 5.7.18 解压版下载安装及启动mysql服务的图文详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-05-05

最新评论