SET ANSI_NULLS ON,SET NOCOUNT ON,SET QUOTED_IDENTIFIER ON

SET ANSI_NULLS ON
Transact-SQL 支持在与空值进行比较时,允许比较运算符返回 TRUE 或 FALSE。

通过设置 ANSI_NULLS OFF 可将此选项激活。
当 ANSI_NULLS 为 OFF 时,
如果 ColumnA 包含 Null 值,则 ColumnA = NULL 之类的比较操作会返回 TRUE;
如果 ColumnA 除了包含 NULL 外还包含某些值,则这类比较操作将返回 FALSE。
比较计算结果为 NULL 的两个表达式也会返回 TRUE。

ANSI_NULLS 设置不影响包含 NULL 的联接列。联接列中包含 NULL 的行不是结果集的一部分。

当 ANSI_NULLS 设置为 OFF 时,以下 SELECT 语句返回 Customer 表中 Region 为 Null 值的所有行:

复制代码
SELECT CustomerID, AccountNumber, TerritoryID
FROM AdventureWorks.Sales.Customer
WHERE TerritoryID = NULL

如果 SET ANSI_NULLS ON
那么 SQL 语句中, 判断 非空的写法, 要修改为:
WHERE 字段 IS NULL

因为 SET ANSI_NULLS ON 以后,
NULL = NULL 将 返回 false.

SET NOCOUNT ON

在存储过程中,经常用到SET NOCOUNT ON;

作用:阻止在结果集中返回显示受T-SQL语句或则usp影响的行计数信息。
当SET ONCOUNT ON时候,不返回计数,当SET NOCOUNT OFF时候,返回计数;

即使当SET NOCOUNT ON 时候,也更新@@RowCount;

当SET NOCOUNT on时候,将不向客户端发送存储过程每个语句的DONE_IN_proc消息,如果存储过程中包含一些并不返回实际数据的语句,网络通信流量便会大量减少,可以显著提高应用程序性能;

SET NOCOUNT 指定的设置时在执行或运行时候生效,分析时候不生效。

1 USE Northwind
2 GO
3 SET NOCOUNT OFF;
4 SELECT TOP 5 OrderDate FROM Orders
5 5GO

结果集显示:

1 SET NOCOUNT ON;
2 SELECT TOP 5 OrderDate FROM Orders
3 GO



在存储过程中经常会有 

Sql代码   收藏代码
  1. SET QUOTED_IDENTIFIER on  
  2. SET QUOTED_IDENTIFIER off  



这样的语句,那么SET QUOTED_IDENTIFIER到底是什么意思,有什么用呢,今天下午仔细的看了一下。 

如果SET QUOTED_IDENTIFIER on时,在创建一个表时,如果这个表的表名,刚好用到了sqlserver的标识符,如下面的情况 


Sql代码   收藏代码
  1. create table distinct(  
  2.  id int not  null constraint pk_1 primary   key,  
  3.  value varchar(255),  
  4.  flag int  
  5. )  


上面的语句运行是会出错的,不管SET QUOTED_IDENTIFIER为on还是off,会提示  在关键字 'distinct' 附近有语法错误。 

那是因为distinct是sqlserver的标识符,如果想以distinct为表时,在QUOTED_IDENTIFIER为off的情况下,是不能创建表名为distinct的表的,因为在QUOTED_IDENTIFIER为off情况下,sqlserver的标识符是不允许加引号的,所以在 
SET QUOTED_IDENTIFIER  off的情况下,不管distinct加引号或不加引号或加双引号都是不可以的。 

但是在 SET QUOTED_IDENTIFIER on 的情况下是可以把sqlserver的标识符加上双引号来创建以sqlserver标识符为表名的表,但是加单引号也是不可以的。 
Sql代码   收藏代码
  1. create table "distinct"(  
  2.  id int not  null constraint pk_1 primary   key,  
  3.  value varchar(255),  
  4.  flag int  
  5. )  


可以运行 

Sql代码   收藏代码
  1. create table ‘distinct’(  
  2.  id int not  null constraint pk_1 primary   key,  
  3.  value varchar(255),  
  4.  flag int  
  5. )  


不可以运行 

猜你喜欢

转载自www.cnblogs.com/yanglang/p/9022562.html
set