博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TSQL--SET ANSI_NULLS OFF
阅读量:6936 次
发布时间:2019-06-27

本文共 734 字,大约阅读时间需要 2 分钟。

当ANSI_NULLS 为ON时,遵循SQL92的标准,只能使用IS NULL 来判断值是否为NULL, 而不能使用=或<>来与NULL做比较,任何值包括NULL值与NULL值做=或<>运算都得到FALSE

 

当ANSI_NULLS为OFF时,将不再遵循SQL92标准,可以使用=和<>来与NULL做BOOL运算

 

测试代码

SET ANSI_NULLS ON

;WITH T1 AS

(

SELECT 1 AS ID

UNION ALL

SELECT NULL

UNION ALL 

SELECT 2 

)

SELECT * FROM T1

WHERE ID =NULL

 

GO

SET ANSI_NULLS OFF

;WITH T1 AS

(

SELECT 1 AS ID

UNION ALL

SELECT NULL

UNION ALL 

SELECT 2 

)

SELECT * FROM T1

WHERE ID =NULL

 

测试结果:

第二次查询能获取NULL的一行

 

 

关于NULL的延伸:

1. 对应聚合函数COUNT,只有SELECT COUNT(*)和SELECT COUNT(1) 会将为NULL的行计算在内,SELECT COUNT(ID)会忽略ID列为NULL的行

2. 对应除COUNT外的其他聚合函数,计算时不考虑为NULL的行

3. 对应CHECK CONSTRAINT,如果列允许为NULL的条件下,为NULL的行将不受CHEKC CONSTRAINT的限制,例如有CHECK CONSTRAINT条件为C1>10,对C1列插入NULL值或更新为NULL不会违反CHECK CONSTRAINT.

4. 在GROUP BY 的时候,会将所有NULL归为一组

转载地址:http://gcgjl.baihongyu.com/

你可能感兴趣的文章
C 文件操作库函数总结
查看>>
CSS 清除浮动的几种方式
查看>>
[转]PHP: 深入pack/unpack
查看>>
外包:卡卡软件简要思路
查看>>
H264码流打包分析(精华)
查看>>
VK Cup 2012 Qualification Round 2 C. String Manipulation 1.0 字符串模拟
查看>>
Pyqt5 获取命令行参数sys.argv
查看>>
virtaulbox视图模式常用切换
查看>>
尹中立:“人造牛市”的结局可能会非常悲惨
查看>>
堆C数组实现
查看>>
设计模式
查看>>
[CareerCup] 1.4 Replace Spaces 替换空格
查看>>
unix &amp; linux oralce用户 内存使用情况分析
查看>>
linux笔记本上安装了双显卡驱动(intel+nvidia)
查看>>
怎么样MyEclipse配置Tomcat?
查看>>
法猿生存计划--左边的管理,技术正确
查看>>
使用eclipse搭建嵌入式开发环境
查看>>
为ListView组件加上快速滑块以及修改快速滑块图像
查看>>
H-index因素
查看>>
操作和维护经常使用的命令
查看>>