O MySQL converte automaticamente uma string para um número:
SELECT '1string' = 0 AS res; -- res = 0 (false)
SELECT '1string' = 1 AS res; -- res = 1 (true)
SELECT '0string' = 0 AS res; -- res = 1 (true)
e uma string que não começa com um número é avaliada como 0:
SELECT 'string' = 0 AS res; -- res = 1 (true)
Claro, quando tentamos comparar uma string com outra string não há conversão:
SELECT '0string' = 'string' AS res; -- res = 0 (false)
mas podemos forçar uma conversão usando, por exemplo, um operador +:
SELECT '0string' + 0 = 'string' AS res; -- res = 1 (true)
última consulta retorna TRUE porque estamos somando uma string '0string' com um número 0, então a string deve ser convertida em um número, torna-se
SELECT 0 + 0 = 'string'
e, novamente, a string 'string' é convertida em um número antes de ser comparada a 0, e então se torna SELECT 0 = 0
que é verdade. Isso também funcionará:
SELECT '1abc' + '2ef' AS total; -- total = 1+2 = 3
e retornará a soma das strings convertidas em números (1 + 2 neste caso).