Что происходит, когда задается имя поля без каких-либо условий в Query?

0

Когда я запускаю SQL-запрос с именем поля только там, где условие, каково будет условие по умолчанию, применимое к имени поля?

Select * from tablename where fieldname;
  • 0
    считать условие как ложное или нулевое
  • 0
    То, что вы не получите, это синтаксическая ошибка.
Теги:
where-clause

3 ответа

1

Предложение WHERE содержит логическое выражение. Что-то вроде a = b and c = d например. Если у вас есть имя where fieldname то fieldname является только булевым выражением. Таким образом, fieldname обычно является булевым столбцом, например, в

select * from client where is_active;

Если это не логический столбец, то MySQL попытается преобразовать:

  1. Сначала число будет усечено до целого. Тогда нуль считается ложным, все остальные числа считаются истинными.
  2. Сначала строка преобразуется в число, где MySQL читает слева направо (например, '012.3AB' преобразуется в 12.3). Затем число будет преобразовано в boolean, как описано выше.
  3. Дата будет преобразована в число (например, date '1999-02-03' станет 19990203). Затем число будет преобразовано в boolean, как описано выше.

(Однако я не знаю, гарантированы ли эти преобразования таким образом. Это просто то, что я наблюдал).

Как правило, не имеет смысла использовать имя where fieldname с небулевым fieldname. Бесшумное преобразование MySQL довольно подвержено ошибкам; легко просто забыть правильную часть сравнения и не заметить. Было бы лучше, на мой взгляд, сделать MySQL вместо ошибки.

0

Я пробовал это в редакторе sqls wsschools:

Изображение 174551

Синтаксической ошибки не было

Чтобы повторно проверить, я использовал синтаксический анализатор sql, чтобы получить результат ниже

Изображение 174551

Если вы попробуете выбрать * у клиентов, где город не является нулевым;

то, очевидно, вы получите все ненулевые записи, как показано ниже.

Изображение 174551

0

Если вы запустите

Select * from tablename where fieldname;

он будет действовать как

SELECT * FROM 'tablename' WHERE fieldname IS NOT NULL

и возвращает непустые/пустые данные

Если вы запустите это в столбце PhpMyAdmin, который вы укажете, будут выделены, а данные без пустых наборов

Ещё вопросы

Сообщество Overcoder
Наверх
Меню