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归为一组

  • 相关阅读:
    分式函数的变换源
    分式之殇
    两条直线的位置关系
    数列专题思维导图
    数列通项公式思维导图
    函数与导数思维导图
    三角函数思维导图
    函数与初等函数思维导图
    集合思维导图
    npm包发布正式和测试版
  • 原文地址:https://www.cnblogs.com/TeyGao/p/3521657.html
Copyright © 2011-2022 走看看