Подтвердить что ты не робот

Что означает "удалить из таблицы, где NULL = NULL" означает?

Что означает delete from table where NULL = NULL?

4b9b3361

Ответ 1

Это ничего не удалит из таблицы. NULL не равен NULL.

Теперь

удалить из таблицы, где NULL NULL

удалит все строки из таблицы.

Ответ 2

Это означает, что ничего не удалять, потому что NULL никогда не равен чему-либо. Или, может быть, это означает: "ничего не удаляйте, если пользовательская СУБД действительно не всасывает, и в этом случае удаляет все из злобы".

Серьезно, однако, такая конструкция обычно возникает, когда предложение WHERE генерируется процедурно, вместо того, чтобы создавать специальный случай для "ничего не делать", иногда проще просто генерировать предложение WHERE, которое заставляет базу данных ничего не делать, Я обычно видел "WHERE 0 = 1", хотя это менее двусмысленно.

Ответ 3

В SQL существует три логических значения: TRUE, FALSE и UNKNOWN. когда мы сравниваем null с нулем, используя null = null, операция вернет UNKNOWN. Более того, в предложении WHERE все значения UNKNOWN отфильтровываются. Если запрос ничего не делает.

Ответ 4

Он наказывает людей, у которых ANSI_NULLS установлен в свою базу данных:)

Ответ 5

Так как NULL не равен NULL, это утверждение ничего не сделает. Он равен:

DELETE FROM TABLE WHERE 0

Ответ 6

Recap:

mysql> select null = null, null <> null, null is null, null = 1, null <> 1;
+-------------+--------------+--------------+----------+-----------+
| null = null | null <> null | null is null | null = 1 | null <> 1 |
+-------------+--------------+--------------+----------+-----------+
|        NULL |         NULL |            1 |     NULL |      NULL |
+-------------+--------------+--------------+----------+-----------+
1 row in set (0.00 sec)


mysql> select count(*) from table;
+----------+
| count(*) |
+----------+
|     10   |
+----------+
1 row in set (0.33 sec)


mysql> select * from table where null;
Empty set (0.00 sec)

Значение, если условие оценивается как null, оно считается ложным по MySql, поэтому delete from table where NULL = NULL фактически ничего не удалит.

NULL - специальный зверь, отмеченный Codd

Ответ 7

Я предполагаю, что это зависит от базы данных, но, насколько мне известно, она ничего не должна достигать, поскольку NULL никогда не равен NULL, по крайней мере, в теории db.

Ответ 8

Эта команда SQL не влияет на одну строку.