[转]MySQL的like下划线问题
mysql like 下划线 问题
2023-09-11 14:16:15 时间
原文地址:MySQL的like下划线问题 - 简书 (jianshu.com)
昨天在修复Bug的时候,碰到一个很有意思的问题,涉及到MySQL查询时下划线的处理,在这里和大家分享一下,希望大家别犯相同的错误
表字段格式
mysql> select DISTINCT(chaptertype) from XXX
+-------------+
| chaptertype |
+-------------+
| 1_1000 |
| 2_1000 |
| 1_300 |
| 2_300 |
+-------------+
查询sql语句
mysql> SELECT chaptertype FROM XXX WHERE v_id = XXX AND chaptertype LIKE '%1_%'\G;
*************************** 1. row ***************************
chaptertype: 1_300
*************************** 2. row ***************************
chaptertype: 1_1000
*************************** 3. row ***************************
chaptertype: 2_1000
3 rows in set (0.00 sec)
出现问题
我只需要查询chaptertype
字段以1_
开头的数据,可是为什么会select出2_1000
这条数据
问题原因
在MySQL的like
语句中,_
不是代表普通的下划线,而是代表一个字符,LIKE 'chaptertype %1_%'
相当于匹配chaptertype
字段包含1X
(X代表任意字符)字符串,而表中恰好2_1000
符合匹配条件,所以就把以2_
开头的数据给匹配出来了。如果要匹配下划线,需要加转义符chaptertype LIKE '%1\_%'
作者:Lee_DH
链接:https://www.jianshu.com/p/951991792b9e
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关文章
- mysql索引总结(4)-MySQL索引失效的几种情况
- mysql索引总结(3)-MySQL聚簇索引和非聚簇索引
- 第 3 章 MySQL 存储引擎简介
- mysql 设置 row格式binlog_为什么要把MySQL的binlog格式修改为row
- 【MySQL高级】MySql中常用工具及Mysql 日志
- 【MySQL高级】Mysql的体系结构概览及存储引擎以及索引的使用
- MySQL架构优化实战系列4:SQL优化步骤与常用管理命令
- 去IOE 遇到Jdbc mysql sql_mode的坑[转载]
- 【MySQL进阶-03】深入理解mysql的索引分类,覆盖索引,覆盖索引失效,回表,MRR
- MySQL root修改普通用户密码及Mysql 修改root密码
- .NET/Mysql-petatoco连接mysql数据库
- 《PHP和MySQL Web开发从新手到高手(第5版)》一一1.2 在Windows下安装
- [mysql]MySQL数据库如何导出
- MySql 几个命令
- ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
- Python写MySQL数据库乱码
- (5.11)mysql复制错误
- MySQL 安装mysql数据库