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. )  
    
    
    不可以运行 
  • 相关阅读:
    扫目录过狗过waf方法
    https://www.webshell.cc/6274.html
    使用WireShark生成地理位置数据地图
    Aircrack-ng 扩展 : Marfil 分布式破解WIFI
    秒爆十万字典:奇葩技巧快速枚举“一句话后门”密码
    Python使用python-nmap模块实现端口扫描器
    Pandas之索引
    pandas之时间序列
    Pandas之分组
    Pandas学习笔记(一)
  • 原文地址:https://www.cnblogs.com/yanglang/p/9022562.html
Copyright © 2011-2022 走看看