Столбец number
имеет тип данных int
, поэтому:
WHERE number = "2"
эквивалентно:
WHERE number = 2
, поскольку MySql неявно преобразует "2"
в 2
, чтобы соответствовать типу данных number
.Поскольку преобразование преобразует строку в число, которое она представляет, вы говорите, что работает .Но здесь:
WHERE number = "hello"
попытка сделать int
из "hello"
приводит к 0
, так что это эквивалентно:
WHERE number = 0
, и вы видите, чтоэто это приносит все нули .
Теперь в случае id
, если его тип данных равен varchar
, то здесь:
WHERE id = "hello"
преобразование не выполняется и потому что id
со значением "hello"
не существует это ничего не приносит .Если тип данных id
равен int
, то снова он эквивалентен:
WHERE id = 0
, и я думаю, что id
со значением 0
не существует, поэтому это ничего не дает.Все это объясняется здесь: Преобразование типов в оценке выражений