zoukankan      html  css  js  c++  java
  • 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. )  
    
    
    不可以运行 
  • 相关阅读:
    关于学习c++服务端的进度,一边更新,一边学习
    Ubuntu20.04 用git上传GitHub文件
    省赛菜鸡打铜记
    Filename too long unable to checkout working tree warning: Clone succeeded, but checkout failed.
    java 对象转Json字符串 --- 报declares multiple JSON fields named XXX 解决方法
    配置win10电脑右下角任务栏时间显示时分秒
    HTTP与HTTPS
    为人三会 口才三绝 修心三不
    1093
    java项目clone后不显示maven
  • 原文地址:https://www.cnblogs.com/yanglang/p/9022562.html
Copyright © 2011-2022 走看看