use*_*803 9 mysql comparison-operators
如果数据库行是这样的:country = 'usa'我查询"select * from data where country = 'usa '"它也返回此行.所以它不完全匹配.
为什么MySQL会这样做?而在其他情况下,当它不是真的时,它也将返回TRUE?
egg*_*yal 10
所有MySQL排序规则都是类型
PADSPACE.这意味着比较MySQL中的所有值CHAR和VARCHAR值,而不考虑任何尾随空格.
在LIKE运营商的定义中,它指出:
正如这个答案中提到的:
此行为在SQL-92和SQL:2008中指定.出于比较的目的,较短的字符串被填充到较长字符串的长度.
从草案(8.2 <比较谓词>):
如果X的字符长度不等于Y的字符长度,那么为了比较的目的,较短的字符串被有效地替换为已经通过连接扩展到较长字符串的长度的自身的副本.在一个或多个填充字符的右侧,其中填充字符是基于CS选择的.如果CS具有NO PAD特性,则填充字符是与实现相关的字符,其不同于X和Y的字符集中的任何字符,其整理小于CS下的任何字符串.否则,填充字符是<space>.
除了其他优秀的解决方案:
Run Code Online (Sandbox Code Playgroud)select binary 'a' = 'a '
| 归档时间: |
|
| 查看次数: |
3726 次 |
| 最近记录: |