sql >> Base de Datos >  >> RDS >> Mysql

¿Puede 'falso' coincidir con alguna cadena en mysql?

En MYSQL, FALSO no es un valor booleano, es un número entero, más específicamente cero. De hecho, MySQL no tiene tipos de columnas booleanas (tiene BOOL y BOOLEAN pero son meros alias para TINYINT ). Entonces su consulta es un sinónimo de:

SELECT * FROM session WHERE token = 0

Desde token es un VARCHAR, MySQL necesita convertir sus cadenas en número. Ejecute esta consulta y obtendrá una idea sobre las reglas:

SELECT
    0 + "0001",
    0 + "123abc",
    0 + "abc123"

Como resultado, fa356333dd3ee8f1b18b8bf0a827e34c convierte a 0 porque comienza con una letra, por lo tanto la coincidencia.