M ysql数据库中 sql语句中where条件中文本匹配问 题 问题描述 字段 name 类型为 varchar 时 (CHAR , VARCHAR 和 TEXT 情况都一样 ) , 语句一 select * from aaa where name='a'; 语句二 select * from aaa where name='a ' ; 结果一样:不能区分末尾是否有空格, 建议: 1 、如果必须精确匹配(包括大小写和末尾空格)建议转换成二进制比较,使用 select * from aaa where name=BINARY'a ' ; 2 、如果需要精确校验末尾是否有空格,但是保留大小写模糊匹配 ( 默认校对规则 _ci 大小写不敏感 ) ,建议增加 length(name) 就可以比较出长度来区分 3 、如果需要精确校验大小写,但是保留末尾空格忽略,可以使用 select * from aaa where name='a' collate utf8_cs; (字符为 utf8 ) 4 、默认设置情况下, a 、 where name='a'; b 、 where name='a '; (末尾有空格) c 、 where name='A'; b 、 where name='A ';( 末尾有空格 ) 四中情况匹配的结果是一样的, 经查询官方文档: 所有 MySQL 归类都是 PAD SPACE 类型。 这意味着所有 CHAR , VARCHAR 和 TEXT 值都会进行比较,而不考虑任何尾随空格。 在此上下文中的“比较”不包括 LIKE 模式匹配运算符,其尾部空格是重要的。 例如: mysql> CREATE TABLE names (myname CHAR(10)); Query OK, 0 rows affected (0.03 sec) mysql> INSERT INTO names VALUES ('Monty'); Query OK, 1 row affected (0.00 sec) mysql> SELECT myname = 'Monty', myname = 'Monty ' FROM names; +------------------+--------------------+ | myname = 'Monty' | myname = 'Monty ' | +------------------+--------------------+ | 1 | 1 | +------------------+--------------------+ 1 row in set (0.00 sec) mysql> SELECT myname LIKE 'Monty', myname LIKE 'Monty ' FROM names; +---------------------+-----------------------+ | myname LIKE 'Monty' | myname LIKE 'Monty ' | +---------------------+-----------------------+ | 1 | 0 | +---------------------+-----------------------+ 1 row in set (0.00 sec) 对于所有 MySQL 版本都是如此,并且不受服务器 SQL 模式的影响。 注意 有关 MySQL 字符集和归类的更多信息,请参阅第 10 章,字符集,归类, Unicode 。 有关存储要求的更多信息,请参见第 11.7 节“数据类型存储要求”。 对于尾随填充字符被去除或比较忽略它们的情况,如果列的索引需要唯一值,则插入到仅与尾部填充字符数不同的列值中将导致重复键错误。 例如,如果一个表包含 'a' ,则尝试存储 'a' 会导致重复键错误。 https://dev.mysql.com/doc/refman/5.6/en/char.html
Mysql数据库中sql语句中where条件中文本匹配问题
来源:这里教程网
时间:2026-03-01 11:12:28
作者:
编辑推荐:
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 30个MySQL千万级大数据SQL查询优化技巧详解
30个MySQL千万级大数据SQL查询优化技巧详解
26-03-01 - Python实现MySQL连接池
Python实现MySQL连接池
26-03-01 - MySQL5.7 Online DDL
MySQL5.7 Online DDL
26-03-01 - 3ds Max制作一个非常漂亮的美女
3ds Max制作一个非常漂亮的美女
26-03-01 - mysql面试练习题
mysql面试练习题
26-03-01 - 使用动态跟踪技术SystemTap监控MySQL、Oracle性能
使用动态跟踪技术SystemTap监控MySQL、Oracle性能
26-03-01 - 欧洲最大MySQL用户Booking.com数据库构架探秘!
欧洲最大MySQL用户Booking.com数据库构架探秘!
26-03-01 - MySQL位图索引解决用户画像问题
MySQL位图索引解决用户画像问题
26-03-01 - 3D MAX新增Autodesk材质来制作环保概念车
3D MAX新增Autodesk材质来制作环保概念车
26-03-01 - MySQL:FLTWL的堵塞和被堵塞总结
MySQL:FLTWL的堵塞和被堵塞总结
26-03-01
