您的位置:首页 > 其它

SET ANSI_NULLS ON、SET NOCOUNT ON

2013-12-02 17:18 393 查看
一、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 时,返回计数。

如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: