zoukankan      html  css  js  c++  java
  • TSQL--SET ANSI_NULLS OFF

    当ANSI_NULLS 为ON时,遵循SQL92的标准,只能使用IS NULL 来判断值是否为NULL, 而不能使用=或<>来与NULL做比较,任何值包括NULL值与NULL值做=或<>运算都得到FALSE

     

    当ANSI_NULLS为OFF时,将不再遵循SQL92标准,可以使用=和<>来与NULL做BOOL运算

     

    测试代码

    SET ANSI_NULLS ON

    ;WITH T1 AS

    (

    SELECT 1 AS ID

    UNION ALL

    SELECT NULL

    UNION ALL 

    SELECT 2 

    )

    SELECT * FROM T1

    WHERE ID =NULL

     

    GO

    SET ANSI_NULLS OFF

    ;WITH T1 AS

    (

    SELECT 1 AS ID

    UNION ALL

    SELECT NULL

    UNION ALL 

    SELECT 2 

    )

    SELECT * FROM T1

    WHERE ID =NULL

     

    测试结果:

    第二次查询能获取NULL的一行

     

     

    关于NULL的延伸:

    1. 对应聚合函数COUNT,只有SELECT COUNT(*)和SELECT COUNT(1) 会将为NULL的行计算在内,SELECT COUNT(ID)会忽略ID列为NULL的行

    2. 对应除COUNT外的其他聚合函数,计算时不考虑为NULL的行

    3. 对应CHECK CONSTRAINT,如果列允许为NULL的条件下,为NULL的行将不受CHEKC CONSTRAINT的限制,例如有CHECK CONSTRAINT条件为C1>10,对C1列插入NULL值或更新为NULL不会违反CHECK CONSTRAINT.

    4. 在GROUP BY 的时候,会将所有NULL归为一组

  • 相关阅读:
    编译C语言单元测试框架CUnit库的方法
    C# 基本元素
    pip的基本使用
    Ubuntu源码安装php
    Ubuntu源码安装Apache服务器
    centos7搭建LAMP(yum安装)
    windows搭建web环境(WAMP)
    windows配置web环境之(搭建php7+apache2 )
    安装thinkphp5
    分离式lnmp部署
  • 原文地址:https://www.cnblogs.com/TeyGao/p/3521657.html
Copyright © 2011-2022 走看看