本文通过代码示例展示了SQL查询中null值在`in`和`not in`条件下的不同处理方式。`in`会忽略null值,而`not in`如果包含null,则会导致整个查询条件为false,返回空结果。 摘要由CSDN通过智能技术生成 一、直接上代码准备2个表的数据,表C:表D:select * from "C" where code in (select code from "D");结果如下select code from "D"这个语句的结果包含了null值,但是在in中,会自动忽略null值;select * from "C" where code not in (select code from "D");上面这个语句跑出来的结果是空,原因是not in中包含了null值,会直接返回false,导致整个whe
前一段时间在公司做一个小功能的时候,统计一下某种情况下有多少条数据,然后修改的问题,当时感觉很简单,写了一个如下的 SQL : SELECT COUNT(*) FROM t1 where tl.c1 not IN (SELECT t2.c1 FROM t2); 预期的结果是:有多少条数据在 t1 ,同时不在 t2 ,结果为:0,也就是 t1 数据都在 t2 ,但是很容易就发现某些数据在 t1 不在 t2 ,所以就感觉很奇怪,这个 SQL 看着也没问题啊。经过一番查询原来是因为 t2 的 c1 字段包含了 null ,修改如下两种形式都可以得到预期的结果: SELECT COUN
原查询语句: SELECT `DEVICE_NO`,`SYS_NO`,`STATION_NO` ,`DEVICE_NAME`,`DEVICE_TYPE_NO` FROM `dic_device` WHERE `STATION_NO`=8 AND `DEVICE_NO` LIKE '%POWER%' AND `DEVICE_TYPE_NO` NOT IN(SELECT `DEVICE_TYP...
insert into test_in(name, hobby, sex, school) values('张一','打球',1,'北京大学'); insert into test_in(name, hobby, sex, school) values('张二','看书', null ,'清华大学'); insert into test_in(name, hobby, sex, school) values('张三','游泳',1, null ); insert SELECT * FROM user WHERE password in (‘44’, null ) 这样是无法将zhangsan 这条数据查出来但使用if null 就能够解决这个问题 SELECT * FROM user WHERE IF NULL (password,‘’) in (‘44’,‘’)使用if null Null 转换成 空串’’ 然后 条件 添加空串就能将 null 查询出来
1)in的逻辑规则是or not in 的逻辑规则是 and 2)判断 null sql 语句为 is not null 或者 is null 3)当遇到 null = null 的判断是时由于不符合 null 的判断规则,所以结果一定为flase not in 包含 null 的情况 select * from A where A.name not in (select B.name from B ) 在上面的not in的查询 如果B表的name字段.
Hive 的not in函数有一个隐藏的陷阱,当not in() 的数 包含 NULL ,匹不上的数据会返回 NULL 而不是True。 所以当在where 使用not in子查询进行筛选,一定要记得去除 NULL 。 样例代码: --not in的原始结果 select num,num not in ( null ,'2'), num not in ( null ,'2') and true from
在Oracle ,使用NOT IN NULL 和IN NULL 时需要注意以下几点: 1. NOT IN NULL :如果NOT IN子句 包含 NULL ,则结果将不会包含任何行,即使与其他 匹配的行存在。 例如,假设我们有一个名为"customers"的表,其 包含以下数据: | CustomerID | CustomerName | | ---------- | ------------ | | 1 | Alice | | 2 | Bob | | 3 | NULL | 如果我们运行以下查询: SELECT CustomerName FROM customers WHERE CustomerName NOT IN ('Alice', 'Bob'); 则查询结果将为空,因为 NULL 不等于任何 ,包括 NULL 本身。 2. IN NULL :如果IN子句 包含 NULL ,则结果将包含所有行,即使与其他 不匹配的行也会包含。 例如,如果我们运行以下查询: SELECT CustomerName FROM customers WHERE CustomerName IN ('Alice', 'Bob', NULL ); 则查询结果将包含所有行,包括CustomerName为 NULL 的行。 因此,在使用NOT IN NULL 和IN NULL 时需要谨慎,确保理解它们的行为并正确使用它们。