sql >> Database teknologi >  >> RDS >> Mysql

Kan 'false' matche en streng i mysql?

I MYSQL, FALSK er ikke en boolesk værdi, det er et heltal, mere specifikt nul. Faktisk har MySQL ikke booleske kolonnetyper (den har BOOL og BOOLEAN men de er blot aliaser for TINYINT ). Så din forespørgsel er et synonym for:

SELECT * FROM session WHERE token = 0

Siden token er en VARCHAR, skal MySQL konvertere dine strenge til tal. Kør denne forespørgsel, og du får en idé om reglerne:

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

Som et resultat, fa356333dd3ee8f1b18b8bf0a827e34c kaster til 0 fordi det starter med et bogstav, altså matchen.



  1. Sådan forespørges en CLOB-kolonne i Oracle

  2. Indsæt CreatedBy og CreatedOn i eventuelle manglende datatabeller i SQL

  3. Kombiner PowerShell og SQL Diagnostic Manager for at automatisere SQL Server-overvågning

  4. Bevaring af data plus indeksdata i hukommelsen - InnoDB vs. MyISAM