MySQL cast automatisch een string naar een nummer:
SELECT '1string' = 0 AS res; -- res = 0 (false)
SELECT '1string' = 1 AS res; -- res = 1 (true)
SELECT '0string' = 0 AS res; -- res = 1 (true)
en een string die niet begint met een getal wordt geëvalueerd als 0:
SELECT 'string' = 0 AS res; -- res = 1 (true)
Als we een string proberen te vergelijken met een andere string, is er natuurlijk geen conversie:
SELECT '0string' = 'string' AS res; -- res = 0 (false)
maar we kunnen een conversie forceren met bijvoorbeeld een + operator:
SELECT '0string' + 0 = 'string' AS res; -- res = 1 (true)
laatste zoekopdracht geeft TRUE terug omdat we een string '0string' met een getal 0 optellen, dus de string moet worden geconverteerd naar een getal, het wordt SELECT 0 + 0 = 'string'
en dan wordt de string 'string' opnieuw geconverteerd naar een getal voordat het wordt vergeleken met 0, en het wordt dan SELECT 0 = 0
wat WAAR is.
Dit zal ook werken:
SELECT '1abc' + '2ef' AS total; -- total = 1+2 = 3
en retourneert de som van de tekenreeksen die zijn geconverteerd naar getallen (1 + 2 in dit geval).