mysql – 不使用通配符时’=’运算符和LIKE之间有什么区别

我这样做是因为我找不到同样理由的问题.原因是当我使用LIKE时,我得到了一致的结果,当我使用(=)运算符时,我得到了不一致的结果.

案子
我有一个带有多个内部联接和左联接的BIG VIEW(viewX),其中一些列具有空值,因为数据库定义允许这样做.

>当我打开这个VIEW时,我看到了例如:结果是8行.
>当我运行时,例如:select * from viewX where column_int = 34 and type_string =’xyz’,此查询显示100行,这些行未在视图的结果中定义. [INCONSISTENT]

>当我从viewX运行select *,其中column_int = 34,type_string就像’xyz’,这个查询只显示4行,这是我打开时在视图中定义的(参见1.)[一致]

有谁知道,这里发生了什么?

解决方法:

从文档……

‘根据SQL标准,LIKE在每个字符的基础上执行匹配,因此它可以产生与=比较运算符不同的结果:’

更重要的是(使用LIKE时):

‘字符串比较不区分大小写,除非其中一个操作数是二进制字符串’

来自:
http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html

上一篇:LINQ之路系列博客导航


下一篇:MySQL WHERE条件是否将括号与PHP相同?