sql语句中使用in、not in 查询时,注意条件范围中的null值处理事项

emp表中的数据

1. 使用in的时候,忽略为null的,不会查询出comm为null的数据

select * from emp e where e.comm in (300, 500, null);

2. 使用not in的时候,如果 not in后面的选项中没有null,只会查询从comm列不为空的列中过滤,会过滤掉comm为null的数据

select * from emp e where e.comm not in (300, 500);

3. 使用not in 的时候,如果not in后面的选项中有null,不会查询出来任何数据。sql语句本身直接返回false,所以使用not in的时候,要保证in中的条件不会出现null的情况,不然可能会出现意想不到的情况。

select * from emp e where e.comm not in (300, 500, null);

原文地址:https://www.cnblogs.com/rensheng/p/12019782.html

时间: 2024-11-11 19:10:27

sql语句中使用in、not in 查询时,注意条件范围中的null值处理事项的相关文章

常用sql语句总结(一)(查询)

常用sql语句总结(一)(查询) 数据操作语句:DML 数据定义语句:DDL 数据控制语句:DCL (执行顺序------序号) 一.基本查询: 1. SELECT * ----- 2 FROM 数据来源,- ----- 1; ---数据来源可以是多个表或者其他范围 或者 SELECT 字段,字段- -----可以列出想要查询的字段名 FROM 数据来源,--; 2.去重复查询(DISTINCT): SELECT DISTINCT 字段,字段-.. FROM 数据来源,-; 3.查询取别名: S

SubSonic3.0使用存储过程查询时,不能使用output参数返回值的问题修改

有个群友问SubSonic3.0执行存储过程时能不能使用output参数返回值,说测试过后获取不到返回值,早上有些时间所以就尝试修改了一下 首先在数据库中创建一个存储过程 1 CREATE PROCEDURE [OutValue] 2 @a int, 3 @b int, 4 @c int output 5 AS 6 Set @c = @a + @b 7 GO 打开Settings.ttinclude模板,找到SPParam类,修改为下面代码 1 public class SPParam{ 2 p

Hibernate使用原生SQL语句进行无关联多表查询

背景:有两个表:CpCg与CpGg需要进行多表查询 因为CpGg表设计到与另外的表也有联系,因此师兄没有关联此两个表,只是用字段进行逻辑关联,CpGg表的cp字段与CpCg表的id字段逻辑关联 首先确保hibernate配置文件配置完成,配置文件如下:(一些与本人项目相关的关键字段已隐去) <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC

sql语句增删改查与子查询

修改表 修改表 语法: Alter table <旧表名> rename [ TO] <新表名>; 例子:Alter table `demo01` rename `demo02`; 添加字段 语法: Alter Table 表名 ADD 字段名  数据类型  [属性]; 例子:Alter Table `Demo02` ADD `passWord`  varchar(50) not null; 修改字段 语法: Alter table 表名 change  原字段名  新字段名  数

mybatis的sql语句导致索引失效,使得查询超时

mybaitis书写sql需要特别注意where条件中的语句,否则将会导致索引失效,使得查询总是超时.如下语句会出现导致索引失效的情况: with test1 as (select count(C_FUNDACCO) val,'a' v from TINF_REQUEST a where a.C_FUNDCODE = #{cFundcode} and a.D_DATADATE = #{dDatadate}), test2 as (select count(C_FUNDACCO) val,'a'

15、sql语句集,Linux 下PHP查询mysql

一.mysql 创建数据库 mysql密码,默认没有 如果想更改的话, mysqladmin  -uroot   password  root123 登录   : [[email protected] root]#   mysql    -uroot    -proot123 1.创建book数据库 mysql>   create   database   book;Query OK, 1 row affected (0.08 sec) 2.授权给 lili 用户 mysql>  grant 

SQL语句汇总——数据修改、数据查询

首先创建一张表如下,创建表的方法在上篇介绍过了,这里就不再赘述. 添加新数据: INSERT INTO <表名> (<列名列表>) VALUES (<值列表>)  如: INSERT INTO t_student (student_id,student_name,student_age,student_sex) VALUES (1,'大毛',18,'男'); 其中列名可以省略,省略之后要求插入的值必须与列一一对应: INSERT INTO t_student VALUE

sql语句对int类型进行模糊查询

重点:select * from course where cast(courseId as char) like '%118%'; 首先可以将int类型转换为string类型的值再进行模糊查询,用方法cast(num as char):这个可以将num(int类型)转化为char类型.完整的语句:假如我现在要在课程表(course)里面根据课程id(courseId)进行模糊查询:select * from course where cast(courseId as char) like '%

IN 查询时出现ORA-01795:列表中的最大表达式数为1000解决方法

问题描述: SQL进行IN查询时出现:java.sql.SQLException: ORA-01795: 列表中的最大表达式数为 1000 解决办法: 问题原因是:SQL进行IN查询时,IN中的数据量不能超过1000条. 例如:select * from student where id in ('S1','S2'...........) 如果in后面数据量过多的话就会报错. 解决方法是:用 or关键字 如:select * from student where id in('S1','S2',