Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Kann 'false' mit einer Zeichenfolge in mysql übereinstimmen?

In MYSQL FALSCH ist kein boolescher Wert, sondern eine Ganzzahl, genauer gesagt Null. Tatsächlich hat MySQL keine booleschen Spaltentypen (es hat BOOL und BOOLEAN aber sie sind nur Aliase für TINYINT ). Ihre Abfrage ist also ein Synonym für:

SELECT * FROM session WHERE token = 0

Seit token ein VARCHAR ist, muss MySQL Ihre Zeichenfolgen in Zahlen umwandeln. Führen Sie diese Abfrage aus, und Sie erhalten eine Vorstellung von den Regeln:

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

Als Ergebnis fa356333dd3ee8f1b18b8bf0a827e34c wandelt in 0 um weil es mit einem Buchstaben beginnt, also das Match.