Suponha que eu tenha uma tabela como esta:
create table mytable(cola int primary key, colb varchar(10));
Vamos colocar alguns dados nele:
insert into mytable values(1, 'abc');
insert into mytable values(2, 'def');
Quando eu seleciono usando esta consulta:
select * from mytable where colb = 0;
Eu recebo TODAS as linhas.
Observe que o tipo de dados colb é varchar, mas eu uso 0 como valor. Se eu usar 1 ou outros números inteiros, não obtenho linhas.
Por que é que? Existe uma configuração para evitar esse comportamento?
BTW mysql 5.5.9 para windows.
Isso é causado pela verificação desleixada do tipo de dados do MySQL. Tanto quanto eu sei, não há solução alternativa, exceto para escrever o SQL correto.
Em geral, é altamente recomendável nunca confiar na conversão implícita de tipo de dados. Certifique-se de que seus literais correspondam ao tipo de dados da coluna.
Então você deve escrever: