Ognj3n Ognj3n - 6 months ago 7
SQL Question

MySQL showing strange result

I have a table called

tabela1512823699024883
that looks like this:
enter image description here

On which I run query like this:

SELECT * FROM tabela1512823699024883 WHERE `age` = 'male'


This query does not make sense, because
age
column is
int
type and I'm looking for
string
value in my query, but
MySQL
still returns no empty rows whatsoever. Here is what query returned:
enter image description here
So
age
row does not contains
male
value in neither rows returned. How can this be possible?

Answer

Same issue will occur with casting a string to an integer type.

SELECT CAST('male' as SIGNED); #0
#or
SELECT CAST('male' as UNSIGNED); #0

However if a number is supplied within the string.

SELECT CAST('1234male' as UNSIGNED); #1234
#and
SELECT CAST('male1234' as UNSIGNED); #0

To resolve the issue use BINARY on the column, which will also cause the textual value to become case-sensitive.

SELECT * FROM tabela1512823699024883 WHERE BINARY `age` = 'male';
Comments