不使用通配符时,'='运算符和LIKE之间有什么区别

时间:2011-08-25 12:30:05

标签: mysql sql operators views

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

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

  1. 当我打开此视图时,我看到例如:结果为8行。
  2. 当我运行例如:select * from viewX where column_int = 34 and type_string = 'xyz'时,此查询显示100行,这些行未在视图的结果中定义。 [INCONSISTENT]
  3. BUT

    1. 当我运行select * from viewX where column_int = 34 and type_string like 'xyz'时,此查询只显示4行,这是我打开时在视图中定义的(请参阅1.)[一致]
    2. 有没有人知道这里发生了什么?

2 个答案:

答案 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的功能与=不同,尤其是当您有尾随或前导空格时。

您需要发布您的实际查询,但我猜它与已知的差异有关。