Когда я запускаю SQL-запрос с именем поля только там, где условие, каково будет условие по умолчанию, применимое к имени поля?
Select * from tablename where fieldname;
Предложение WHERE
содержит логическое выражение. Что-то вроде a = b and c = d
например. Если у вас есть имя where fieldname
то fieldname
является только булевым выражением. Таким образом, fieldname
обычно является булевым столбцом, например, в
select * from client where is_active;
Если это не логический столбец, то MySQL попытается преобразовать:
'012.3AB'
преобразуется в 12.3
). Затем число будет преобразовано в boolean, как описано выше.date '1999-02-03'
станет 19990203
). Затем число будет преобразовано в boolean, как описано выше.(Однако я не знаю, гарантированы ли эти преобразования таким образом. Это просто то, что я наблюдал).
Как правило, не имеет смысла использовать имя where fieldname
с небулевым fieldname
. Бесшумное преобразование MySQL довольно подвержено ошибкам; легко просто забыть правильную часть сравнения и не заметить. Было бы лучше, на мой взгляд, сделать MySQL вместо ошибки.
Я пробовал это в редакторе sqls wsschools:
Синтаксической ошибки не было
Чтобы повторно проверить, я использовал синтаксический анализатор sql, чтобы получить результат ниже
Если вы попробуете выбрать * у клиентов, где город не является нулевым;
то, очевидно, вы получите все ненулевые записи, как показано ниже.
Если вы запустите
Select * from tablename where fieldname;
он будет действовать как
SELECT * FROM 'tablename' WHERE fieldname IS NOT NULL
и возвращает непустые/пустые данные
Если вы запустите это в столбце PhpMyAdmin, который вы укажете, будут выделены, а данные без пустых наборов