我这样做,因为我找不到同样理由的问题。原因是当我使用LIKE
时,我得到了一致结果,当我使用(=)运算符时,我得到了不一致的结果。
案例
我有一个带有多个内部联接和左联接的BIG VIEW(viewX),其中一些列具有空值,因为数据库定义允许这样做。
select * from viewX where column_int = 34 and type_string = 'xyz'
时,此查询显示100行,这些行未在视图的结果中定义。 [INCONSISTENT] BUT
select * from viewX where column_int = 34 and type_string like 'xyz'
时,此查询只显示4行,这是我打开时在视图中定义的(请参阅1.)[一致] 有没有人知道这里发生了什么?
答案 0 :(得分:2)
来自文档......
'根据SQL标准,LIKE在每个字符的基础上执行匹配,因此它可以产生与=比较运算符不同的结果:'
更重要的是(使用LIKE时):
'字符串比较不区分大小写,除非其中一个操作数是二进制字符串'
来自: http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html
答案 1 :(得分:2)
Per the MySQL documentation LIKE
的功能与=
不同,尤其是当您有尾随或前导空格时。
您需要发布您的实际查询,但我猜它与已知的差异有关。