一、表结构
TABLE person
id | name |
---|---|
1 | 你 |
2 | 你(一个空格) |
3 | 你(二个空格) |
二、查询与结果
select * from person where `name` = ?
无论 ? = ”你 + 几个空格”,都会检索出全部三个结果。
三、原因
MySQL 校对规则属于PADSPACE,会忽略尾部空格
针对的是 varchar char text …… 等文本类的数据类型
此为 SQL 标准化行为。无需要设置也无法改变。
四、想要精确查询怎么办?
方法一:like
select * from person where `name` like ‘你‘
方法二:BINARY
select * from person where `name` = BINARY ‘你‘
注:BINARY 不是函数,是类型转换运算符,它用来强制它后面的字符串为一个二进制字符串,可以理解成精确匹配
方法三:使用length函数
select * from table where user = ‘你‘ and length(user) = length(‘你‘);
转载于:https://www.cnblogs.com/xjnotxj/p/9019866.html
原文地址:https://www.cnblogs.com/wzk-0000/p/12298015.html
时间: 2024-08-29 00:59:52