SET ANSI_NULLS ON
Posted lhgohead
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SET ANSI_NULLS ON相关的知识,希望对你有一定的参考价值。
SQL Server 创建存储过程模板会自动添加几行代码,其中一行为 【SET ANSI_NULLS ON】,作用是什么呢?
SQL-92 标准要求在对空值(NULL) 进行等于 (=) 或不等于 (<>) 比较时取值为 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 语句返回列中包含非空值的行。
先来测试一下:
新建表Score,里面有行记录如下:
先正常查询空记录:
再使用等号(=)号查询空记录:
这时我们使用 【SET ANSI_NULLS OFF】,再通过等号查询,查看结果(结果和使用 is null 一致):
以上是关于SET ANSI_NULLS ON的主要内容,如果未能解决你的问题,请参考以下文章
SET ANSI_NULLS ON 在T-SQL中是什么意思
SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON 什么意思 sql server 2005 2008
sql = 和<>遵循的sql-92标准的设置SET ANSI_NULLS ON
异类查询要求为连接设置ANSI_NULLS和ANSI_WARNINGS选项