sql关键字之null

在数据库中使用一种特殊的值表示未知的值--NULL,我们称之为空值但并不是空的字符串,而是特殊的值。

执行:

select * from EMP where EMPID in(2,3,null);

结果:

        

执行:select * from EMP where EMPID not in(2,3,null);

结果:no rows selected;

开始我以为应该返回EMPID的数据,然而并不是。

select * from EMP where EMPID not in(2,3,null);

等价:select * from EMP where EMPID not (empid=2 or empid=2 or empid=null);

等价:select * from EMP where EMPID not (false or false or empid=null);

等价:select * from EMP where EMPID not null;

PS:FALSE OR NULL=NULL ,而TRUE OR NULL=TRUE

1、SET ANSI_NULLS 被设置为 ON

也不会返回任何结果集

2、SET ANSI_NULLS 被设置为 off

返回不为null 的数据

推出结论:在where条件返回false或null的时候不成立

时间: 2024-11-07 12:56:24

sql关键字之null的相关文章

SQL语句中=null和is null

平时经常会遇到这两种写法:IS NOT NULL与!=NULL.也经常会遇到数据库有符合条件!=NULL的数据,但是返回为空集合.实际上,是由于对二者使用区别理解不透彻. 默认情况下,推荐使用 IS NOT NULL去做条件判断,因为SQL默认情况下对WHERE XX!= Null的判断会永远返回0行,却不会提示语法错误. 这是为什么呢? SQL Server文档中对Null值的比较运算定义了两种规则,如在SQL Server 2000中: 规则一是是ANSISQL(SQL-92)规定的Null

SQL中的Null深入研究分析

虽然熟练掌握SQL的人对于Null不会有什么疑问,但总结得很全的文章还是很难找,看到一篇英文版的, 感觉还不错. Tony Hoare 在1965年发明了 null 引用, 并认为这是他犯下的"几十亿美元的错误". 即便是50年后的今天, SQL中的 null 值还是导致许多常见错误的罪魁祸首. 我们一起来看那些最令人震惊的情况. Null不支持大小/相等判断 下面的2个查询,不管表 users 中有多少条记录,返回的记录都是0行: select * from users where

深入详解SQL中的Null

NULL 在计算机和编程世界中表示的是未知,不确定.虽然中文翻译为 "空", 但此空(null)非彼空(empty). Null表示的是一种未知状态,未来状态,比如小明兜里有多少钱我不清楚,但也不能肯定为0,这时在计算机中就使用Null来表示未知和不确定. 虽然熟练掌握SQL的人对于Null不会有什么疑问,但总结得很全的文章还是很难找,看到一篇英文版的, 感觉还不错. Tony Hoare 在1965年发明了 null 引用, 并认为这是他犯下的"几十亿美元的错误"

SQL空和NULL的区别

1.NULL意思为缺失的值(missing value). 2.三值逻辑(three-valued-logic: TRUE,FALSE,UNKNOWN). 在SQL中有三个逻辑谓词:TURE,FALSE,UNKNOWN.在大多数的编程语言中只有TRUE和FALSE,而在SQL中独有UNKNOWN,之所有存在与NULL有关. 比如做如下比较: NULL>32;NULL=NULL;X+NULL>Y;NULL<>NULL.其计算结果均为UNKNOWN. 可能会有些迷惑,于二值逻辑不同(N

sql关键字的解释执行顺序

sql关键字的解释执行顺序 分类: 笔试面试总结2013-03-17 14:49 1622人阅读 评论(1) 收藏 举报 SQL关键字顺序 表里面的字段名什么符号都不加,值的话一律加上单引号 有一次笔试考到了关于SQL关键字执行顺序的知识点. 我们做软件开发的,大部分人都离不开跟数据库打交道,特别是erp开发的,跟数据库打交道更是频繁,存储过程动不动就是上千行,如果数据量大,人员流动大,那么我么还能保证下一段时间系统还能流畅的运行吗?我么还能保证下一个人能看懂我么的存储过程吗?那么我结合公司平时

SQL关键字转换大写核心算法实现

1 不跟你多废话 上代码! /// <summary> /// SQL关键字转换器 /// </summary> public class SqlConverter : IKeywordsConvertible { public SqlConverter(string[] keywords) { Keywords = keywords; } public SqlConverter() { } /// <summary> /// 关键字集合 /// </summar

SQL中的NULL值

除is [not] null之外,空值不满足任何查找条件.–如果null参与算术运算,则该算术表达式的值为null.–如果null参与比较运算,则结果可视为false.在SQL-92中可看成unknown.–如果null参与聚集运算,则除count(*)之外其它聚集函数都忽略null.   例:select    sum(SAL)           from     PROF   例:select    count(*)           from     PROF– 详细分析 SQL中的N

Django与SQL语言中——NULL与空字符串的区别

SQL有指定空值的独特方式,它把空值叫做NULL. Null在数据库中表示 不知道的数据,主要有3种意思: 1)知道数据存在,但不知道具体值. 2)不知道数据是否存在. 3)数据不存在. 在SQL中, NULL的值不同于空字符串,就像Python中None不同于空字符串("")一样.这意味着某个字符型字段(如VARCHAR)的值不可能同时包含NULL和空字符串. 这会引起不必要的歧义或疑惑. 为什么这条记录有个NULL,而那条记录却有个空字符串? 它们之间有区别,还是数据输入不一致?

深入具体解释SQL中的Null

NULL 在计算机和编程世界中表示的是未知,不确定.尽管中文翻译为 "空", 但此空(null)非彼空(empty). Null表示的是一种未知状态.未来状态,比方小明兜里有多少钱我不清楚,但也不能肯定为0,这时在计算机中就使用Null来表示未知和不确定. 尽管熟练掌握SQL的人对于Null不会有什么疑问,但总结得非常全的文章还是非常难找,看到一篇英文版的, 感觉还不错. Tony Hoare 在1965年发明了 null 引用, 并觉得这是他犯下的"几十亿美元的错误&quo