Пустой В списке параметров пункта в MySQL

Что происходит, когда Вы делаете SQL-запрос где IN пункт пуст?

Например:

SELECT user WHERE id IN ();

MySQL обработает это как ожидалось (то есть, всегда ложь), и в противном случае как мое приложение может обработать этот случай при создании IN пункт динамично?

58
задан 22 March 2016 в 01:17

2 ответа

Вот другое изменение всегда ложного оператора для пустых списков, который сохраняет и логику и понятие фактического столбца в запросе.

Неправильный id in () может быть переписан в:

where id <> id;

Столь же неправильное отрицательное условие id not in () может быть преобразовано строительными нормами и правилами пользовательского запроса в:

where id = id;

Этот подход более безопасен, чем id not in (NULL) , поскольку он не оценивает к ПУСТОМУ УКАЗАТЕЛЮ.

, Но остерегаются этого, это отфильтровало бы из результата строки где id is null. Это можно считать функцией в некоторых случаях.

Espesially, полезный с комплексом, сложил логику создания запроса, где вложенный разработчик не знает, как получающийся подзапрос мог использоваться выше.

0
ответ дан 1 November 2019 в 14:45

Если Вы используете тот запрос в приложении, и Вы передаете динамично список объектов к запросу, я не должен звонить в базу данных, чтобы сделать выбор с помощью невозможного значения, я должен возвратить пустой список, не звоня в запрос базы данных, непосредственно.

, поскольку это не имеет никакого смысла сделать запрос, который Вы знаете, это пусто прежде, чем назвать его.

0
ответ дан 1 November 2019 в 14:45

Другие вопросы по тегам:

Похожие вопросы: