在sql查询中,
select *
from t1
where c not in (select c2 from t2)
如果t2中有c2有null的话,这句话就有可能执行的结果为,
只有在子查询必须过滤掉NULL值才正常
select *
from t1
where c not in (select c2 from t2 where c2 is not null)
搜索原因得知
SQL-92标准要求对空值的等于(=)或不等于(<>)比较取值为FALSE。当SET ANSI_NULLS为ON时,即使 column_name中存在空值,使用WHERE column_name = NULL的SELECT语句仍返回零行;即使column_name中存在非空值,使用WHERE column_name <> NULL的SELECT语句仍返回零行。
当SET ANSI_NULLS为OFF时,等于(=)和不等于(<>)比较运算符不遵从SQL-92标准。使用WHERE column_name = NULL的SELECT语句返回column_name中含有空值的行。使用WHERE column_name <> NULL的SELECT语句返回列中含有非空值的行。此外,使用WHERE column_name <> XYZ_value的SELECT语句返回所有非XYZ值和非NULL的行。
也可用exists
分享到:
相关推荐
关于Exists,not Exists.in ,not in效率的说明。关于Exists,not Exists.in ,not in效率的说明。关于Exists,not Exists.in ,not in效率的说明。关于Exists,not Exists.in ,not in效率的说明。关于Exists,not Exists.in...
SQL语句优化——in,not in,exists,not exists, left join...on博客所需SQL语句.txt欢迎下载!
里面自己根据网上的资源整理出来的一份sql中in,exists,not in,not exists的使用方法以及注意事项等,有助于初学的朋友们借鉴。
SQL中in参数化的用法,用三种方法,详见http://www.cnblogs.com/lzrabbit/archive/2012/04/22/2465313.html#wherein
NULL 博文链接:https://576017120.iteye.com/blog/1624774
用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格。
Advanced SQL Injection In SQL Server Applications
上面两个简单的Sql,我们从表面理解,查询的最终结果应该是一样的,但实际结果却和我们想象的不一样 第一条sql查询的结果有一条数据 第二条sql查询的结果却为空 原因: not exists的子查询,对于子查询不返回行和...
SQL In SQL Between SQL Aliases SQL Join SQL Inner Join SQL Left Join SQL Right Join SQL Full Join SQL Union SQL Select Into SQL Create DB SQL Create Table SQL Constraints SQL Not Null ...
Sams Teach Yourself SQL in 10 Minutes has established itself as the gold standard for introductory SQL books, offering a fast-paced accessible tutorial to the major themes and techniques involved in ...
sql语句优化之用EXISTS替代IN、用NOT EXISTS替代NOT IN的语句
SQL存储过程IN参数的解决办法SQL存储过程IN参数的解决办法
SQL语句优化——in,not in,exists,not exists, left join...on博客所需SQL语句2.txt,欢迎下载!
Anley, C. (2002). "Advanced SQL injection in SQL server applications." White paper, Next Generation Security Software Ltd.
sql语句中in与exist_not_in与not_exist_的区别
Teach Yourself SQL in 21 Days
Sql in split Sql in split Sql in split Sql in split
在64位机器上使用plSQL连接Oracle的问题(SQLNet not properly installed)
SQL中对not in和not exist查询的替代算法.pdf