sql >> Databasteknik >  >> RDS >> Mysql

Kan "false" matcha någon sträng i mysql?

I MYSQL, FALSKT är inte ett booleskt värde, det är ett heltal, närmare bestämt noll. Faktum är att MySQL inte har booleska kolumntyper (den har BOOL). och BOOLEAN men de är bara alias för TINYINT ). Så din fråga är en synonym för:

SELECT * FROM session WHERE token = 0

Sedan token är en VARCHAR måste MySQL konvertera dina strängar till nummer. Kör den här frågan så får du en uppfattning om reglerna:

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

Som ett resultat, fa356333dd3ee8f1b18b8bf0a827e34c castar till 0 eftersom den börjar med en bokstav, alltså matchningen.



  1. Radversionering i MySQL

  2. Jag förstår inte Collation? (Mysql, RDBMS, teckenuppsättningar)

  3. Spark:Att läsa stora MySQL-tabeller i DataFrame misslyckas

  4. Oracle Data Mining (ODM) – Installation och installation