MySQL关于查询条件中:字符串类型的值忽略英文字母的大小写以及字符串尾部包含空格的问题

时间:2020-12-03 07:33:58
MySQL关于查询条件中:字符串类型的值忽略英文字母的大小写以及字符串尾部包含空格的问题


问题:MySQL中执行下面3条查询语句,查询出来的结果完全相同。

SELECT * FROM t_accounts WHERE account= "xiaoning"

SELECT * FROM t_accounts WHERE account= "XiaoNing"

SELECT * FROM t_accounts WHERE account= "xiaoning "


分析:
1)MySQL对CHAR或VARCHAR类型的值进行比较(=)时,会忽略字符串中英文字母的大小写以及尾部的空格
2)对CHAR和VARCHAR类型的值进行LIKE查询时,会忽略英文字母的大小写,但是不会忽略字符串尾部的空格

解决方案:

SELECT * FROM t_accounts WHERE account= BINARY "xiaoning"

SELECT * FROM t_accounts WHERE account= BINARY "XiaoNing"

SELECT * FROM t_accounts WHERE account= BINARY "xiaoning "

BINARY不是函数,是类型转换运算符,BINARY强制将后面的字符串转换为一个二进制的字符串,可以理解为在字符串比较的时候区分英文字母的大小写以及空格,即精确匹配。