首页 > 数据库技术 > 详细

SQL关于子集中有NULL的问题解析

时间:2021-05-31 11:52:42      阅读:16      评论:0      收藏:0      [点我收藏+]

问题描述: 在项目中,伦理修正案的发起需要检测子集中是否包含已存在的项目编号,如果包含则不能发起。
但是,由于子集中含有NULL值,即使子集中未包含项目编号,依然不能正确发起。

验证:

 -- 当 ‘SET ANSI_NULLS ON’ 时,
 -- 如果子集有NULL,以下返回false,
 -- 因为NULL表示UNKNOWN,即不知道‘1’是不是存在于子集中则直接返回 false
SELECT  CASE WHEN ‘1‘ NOT IN ( SELECT   ‘2‘
                               UNION ALL
                               SELECT   NULL ) THEN ‘true‘
             ELSE ‘false‘
        END;

返回:
false

微软官方文档给出的解释:
技术分享图片
关于ANSI_NULLS的原文: https://docs.microsoft.com/en-us/sql/t-sql/statements/set-ansi-nulls-transact-sql?view=sql-server-ver15

解决方法就是先排除子集中的NULL值。

SQL关于子集中有NULL的问题解析

原文:https://www.cnblogs.com/xuxuzhaozhao/p/14830242.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!