Esta declaración devuelve filas para my_field = '13a'
:
SELECT * FROM my_table WHERE my_field=13
Debido a que MySQL realiza una conversión de tipo de cadena a número durante la comparación, convierte '13a'
a 13
. Más sobre eso en esta página de documentación
.
Agregar comillas convierte el número entero en una cadena, por lo que MySQL solo realiza una comparación de cadenas. Obviamente, '13'
no puede ser igual a '13a'
.
El LIKE
La cláusula siempre realiza una comparación de cadenas (a menos que uno de los operandos sea NULL
, en cuyo caso el resultado es NULL
).