Odpowiedzi na Twoje pierwsze trzy pytania to:tak, tak i nie.
Gdy ciąg 'text'
jest konwertowany na liczbę, staje się wartością 0
.
Dokumentacja opisująca konwersję typów znajduje się tutaj .
Na Twoje zapytanie:
SELECT table.*
FROM table
WHERE id='text';
Zasada jest ujęta w tym fragmencie z dokumentacji:
We wszystkich innych przypadkach argumenty są porównywane jako liczby zmiennoprzecinkowe (rzeczywiste).
Innymi słowy, jest to właściwie równoważne:
WHERE id = 0.0