一、表结构

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 不是函数,是类型转换运算符,它用来强制它后面的字符串为一个二进制字符串,可以理解成精确匹配

版权声明:本文为xjnotxj原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/xjnotxj/p/9019866.html