Le risposte alle tue prime tre domande sono:sì, sì e no.
Quando la stringa 'text'
viene convertito in un numero, diventa il valore 0
.
La documentazione che descrive la conversione del tipo è qui .
Per la tua domanda:
SELECT table.*
FROM table
WHERE id='text';
La regola è catturata da questo estratto dalla documentazione:
In tutti gli altri casi, gli argomenti vengono confrontati come numeri a virgola mobile (reali).
In altre parole, questo è effettivamente equivalente a:
WHERE id = 0.0