欢迎投稿

今日深度:

SQL中notin与null值的具体使用,

SQL中notin与null值的具体使用,


A not in B的原理是拿A表值与B表值做是否不等的比较, 也就是a != b. 在sql中, null是缺失未知值而不是空值。

当你判断任意值a != null时, 官方说, “You cannot use arithmetic comparison operators such as =, <, or <> to test for NULL”, 任何与null值的对比都将返回null. 因此返回结果为否,这点可以用代码 select if(1 = null, ‘true’, ‘false’)证实.

举个例子

在这里插入图片描述

select id,case when p_id is null then 'Root' 
when id not in (select p_id from tree) then 'Leaf' end type
else 'Inner' 
from tree

这种写法会导致Leaf结果完全看不到

从上述原理可见, 当询问 id not in (select p_id from tree)时, 因为p_id有null值, 返回结果全为false, 于是跳到else的结果, 返回值为inner. 所以在答案中,leaf结果从未彰显,全被inner取代.

到此这篇关于SQL中not in与null值的具体使用的文章就介绍到这了,更多相关SQL not in与null值内容请搜索PHP之友以前的文章或继续浏览下面的相关文章希望大家以后多多支持PHP之友!

您可能感兴趣的文章:
  • 解决mysql使用not in 包含null值的问题
  • 避坑:Sql中 in 和not in中有null值的情况说明

www.htsjk.Com true http://www.htsjk.com/Sql_Server/47565.html NewsArticle SQL中notin与null值的具体使用, A not in B的原理是拿A表值与B表值做是否不等的比较, 也就是a != b. 在sql中, null是缺失未知值而不是空值。 当你判断任意值a != null时, 官方说, You cannot use ar...
评论暂时关闭