Отговорите на първите ви три въпроса са:да, да и не.
Когато низът 'text'
се преобразува в число, то става стойността 0
.
Документацията, която описва преобразуването на типове, е тук .
За вашето запитване:
SELECT table.*
FROM table
WHERE id='text';
Правилото е обхванато от тази извадка от документацията:
Във всички останали случаи аргументите се сравняват като числа с плаваща запетая (реални).
С други думи, това всъщност е еквивалентно на:
WHERE id = 0.0