I do this question, because I can’t found a question with the same reason. The reason is when I use LIKE, I get CONSISTENT RESULTS, and when I use (=) operator I get INCONSISTENT RESULTS.
THE CASE
I have a BIG VIEW (viewX) with multiple inner joins and left joins, where some columns have null values, because the database definition allows for that.
- When I open this VIEW I see for example: 8 rows as result.
- When I run for example:
select * from viewX where column_int = 34 and type_string = 'xyz', this query shows me 100 rows, that aren’t defined in the result of the view. [INCONSISTENT]
BUT
- When I run
select * from viewX where column_int = 34 and type_string like 'xyz', this query show me only 4 rows, that is defined in the view when I opened (see 1.) [CONSISTENT]
Does anyone idea, of what is happening here?
From the documentation…..
‘Per the SQL standard, LIKE performs matching on a per-character basis, thus it can produce results different from the = comparison operator: ‘
more importantly (when using LIKE):
‘string comparisons are not case sensitive unless one of the operands is a binary string‘
from :
http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html