"从表中删除NULL = NULL"是什么意思?

roc*_*iiu 24 mysql sql null sql-delete

什么delete from table where NULL = NULL意思?

Cox*_*oxy 37

这将从表中删除任何内容.NULL不等于NULL.

现在

从表中删除NULL为NULL

删除表中的所有行.

  • +1表示NULL!= NULL.更多解释,因为我喜欢这种区别.在数据库术语中,NULL可能意味着缺少信息 - 即无论出于何种原因未提供 - 或未知信息,但您不知道哪些信息.因此,没有两个NULL是相似的. (8认同)
  • +1但有一点需要注意.它仅在标准SQL中,并非所有RDBMS都提供相同的SQL标准方言.我没有因为这个开关`张贴作为回答,因为这个问题被标记_mysql_,但在MS SQL Server,如果第一个问题`SET ANSI_NULLS off`然后`从表中删除当空= null`将删除所有行null = null`变为true. (5认同)
  • 对,两个NULL也不是不相同的.如果您不知道这些值,您无法确定它们是否相同或者它们是否不同.因此,任何比较都会产生*unknown*,这不是*false*但它绝对不是*true*. (3认同)

hob*_*bbs 16

这意味着不要删除任何东西,因为NULL永远不会等于任何东西.或者它可能意味着"除非用户的DBMS真的很糟糕,否则不要删除任何东西,在这种情况下,将所有内容全部删除".

但是,严肃地说,当程序生成WHERE子句时,通常会出现这种构造 - 而不是为"什么都不做"创建一个特殊情况,有时候生成一个导致数据库什么也不做的WHERE子句更简单.我经常看到"WHERE 0 = 1",但不那么含糊.


Toa*_*yen 8

在SQL中,有三个逻辑值,即TRUE,FALSE和UNKNOWN.当我们将null与null进行比较时,使用null = null,操作将返回UNKNOWN.此外,在WHERE子句中,所有UNKNOWN值都被过滤掉.因此查询不执行任何操作.


小智 5

它惩罚那些在其数据库中将ANSI_NULLS设置为关闭的人:)