SET ANSI_NULLS ON、SET NOCOUNT ON

原创 2013年12月02日 17:18:40

一、SET ANSI_NULLS ON|OFF

指定在与 Null 值一起使用等于 (=) 和不等于 (<>) 比较运算符时采用符合 ISO 标准的行为。

当 SET ANSI_NULLS 为 ON 时,即使 column_name 中包含空值,使用 WHERE column_name =NULL 的 SELECT 语句仍返回零行。即使 column_name 中包含非空值,使用 WHERE column_name <> NULL 的 SELECT 语句仍会返回零行。

当 SET ANSI_NULLS 为 OFF 时,等于 (=) 和不等于 (<>) 比较运算符不遵守 ISO 标准。使用 WHERE column_name =NULL 的 SELECT 语句返回 column_name 中包含空值的行。使用 WHERE column_name <>NULL 的 SELECT 语句返回列中包含非空值的行。

 

例子:

 -- Create table t1 and insert values.
CREATE TABLE t1 (a INT NULL,b VARCHAR(40))
INSERT INTO t1 values (NULL,'HH')
INSERT INTO t1 values (0,'LL')
INSERT INTO t1 values (1,'OO')
GO

1、

-- Print message and perform SELECT statements.
PRINT 'Testing default setting';
DECLARE @varname int;
SELECT @varname = NULL;
SELECT * FROM t1 WHERE a = @varname;
SELECT * FROM t1 WHERE a <> @varname;
SELECT * FROM t1 WHERE a IS NULL;
GO

输出:

 

Testing default setting
a           b
----------- ----------------------------------------
NULL        HH

(1 row(s) affected)

a           b
----------- ----------------------------------------
0           LL
1           OO

(2 row(s) affected)

a           b
----------- ----------------------------------------
NULL        HH

(1 row(s) affected)

 

二、SET NOCOUNT ON|OFF

当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL语句影响的行数)。当 SET NOCOUNT 为 OFF 时,返回计数。

如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。

 

T-SQL注意事项(1)——SET NOCOUNT ON的去与留

前言 用了一段时间T-SQL之后,哪怕自己没用过,也多多少少看过SSMS中的SET NOCOUNT ON命令,很多性能优化文章中都有提到这个东西,它们建议尽可能使用这个命令减少网络传输的压力,那么今天...
  • DBA_Huangzj
  • DBA_Huangzj
  • 2016年03月17日 16:21
  • 5351

SET ANSI_NULLS ON

 指定在与 Null 值一起使用等于 (=) 和不等于 (当 SET ANSI_NULLS 为 ON 时,即使 column_name 中包含空值,使用 WHERE column_name = NUL...
  • shuixie607
  • shuixie607
  • 2009年04月30日 13:26
  • 7081

Sql Server 使用 SET NOCOUNT { ON | OFF}

Sql Server 使用 SET NOCOUNT { ON | OFF}
  • skyandcode
  • skyandcode
  • 2014年02月25日 16:18
  • 3572

sql生成脚本里SET ANSI_NULLS ON什么意思

ET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO 是什么意思? 这些是 SQL-92 设置语句,使 SQL Server 2000/2005 遵从 SQL...
  • apinghappy
  • apinghappy
  • 2008年08月07日 15:33
  • 4567

SQL中set ansi_nulls与set quoted_identifier 解释

SET ANSI_NULLS 指定在对空值使用等于 (=) 和不等于 ( ) 比较运算符时,这些运算符的 SQL-92 遵从行为。语法 SET ANSI_NULLS {ON | OFF}注释 SQL-...
  • fangaoxin
  • fangaoxin
  • 2010年07月05日 10:50
  • 1723

sql set nocount on 问题

数据库有表A,B ,  现在有一个需求, 当表A修改、增加、删除时候,更新表B内的一个字段。      汗,听着挺简单的,于是呼呼呼就开始写了。      set ANSI_NUL...
  • lailai186
  • lailai186
  • 2013年05月23日 10:47
  • 1448

使用SET NOCOUNT ON

触发器使表格和交叉数据库之间自动同步变得更容易。但是其性能可能会受到很大的影响。这里我将指出一个能减少这种无法预料问题影响的命令。例如,当INSERT触发器重复地被激活,尤其当使用“INSERT IN...
  • abandonship
  • abandonship
  • 2005年09月21日 16:01
  • 2049

SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON 什么意思 sql server 2005 2008

在sqlserver2005或SQL2008数据库项目中,创建视图或存储过程的时候往往有以下开头语句:SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO…………...
  • dreamsky_boy
  • dreamsky_boy
  • 2010年06月13日 10:19
  • 2445

存储过程中的 SET NOCOUNT ON 什么意思

当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。当 SET NOCOUNT 为 OFF 时,返回计数。 如果存储过程中包含的一些语句并不返回...
  • terryhuang
  • terryhuang
  • 2007年05月24日 13:34
  • 515

通过SET NOCOUNT ON 命令使触发器具有更好的性能

 通过SET NOCOUNT ON 命令使触发器具有更好的性能  触发器使得表和跨数据库之间数据的自动同步行为变得简单。但是,那些一眼看上去不是很明显的东西却会对它们的性能造成显著的影响。这里我将描述...
  • qinghecool
  • qinghecool
  • 2008年09月27日 14:48
  • 1320
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SET ANSI_NULLS ON、SET NOCOUNT ON
举报原因:
原因补充:

(最多只允许输入30个字)