Les réponses à vos trois premières questions sont :oui, oui et non.
Lorsque la chaîne 'text'
est converti en nombre, il devient la valeur 0
.
La documentation qui décrit la conversion de type est ici .
Pour votre requête :
SELECT table.*
FROM table
WHERE id='text';
La règle est capturée par cet extrait de la documentation :
Dans tous les autres cas, les arguments sont comparés en tant que nombres à virgule flottante (réels).
En d'autres termes, cela équivaut en fait à :
WHERE id = 0.0