MySQL автоматично прехвърля низ към число:
SELECT '1string' = 0 AS res; -- res = 0 (false)
SELECT '1string' = 1 AS res; -- res = 1 (true)
SELECT '0string' = 0 AS res; -- res = 1 (true)
и низ, който не започва с число, се оценява като 0:
SELECT 'string' = 0 AS res; -- res = 1 (true)
Разбира се, когато се опитаме да сравним низ с друг низ, няма преобразуване:
SELECT '0string' = 'string' AS res; -- res = 0 (false)
но можем да принудим преобразуване, използвайки например оператор +:
SELECT '0string' + 0 = 'string' AS res; -- res = 1 (true)
последната заявка връща TRUE, защото сумираме низ '0string' с число 0, така че низът трябва да бъде преобразуван в число, става SELECT 0 + 0 = 'string'
и след това отново низът 'string' се преобразува в число, преди да бъде сравнен с 0, и след това става SELECT 0 = 0
което е ВЯРНО.
Това също ще работи:
SELECT '1abc' + '2ef' AS total; -- total = 1+2 = 3
и ще върне сумата от низовете, преобразувани в числа (1 + 2 в този случай).