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

  • 相关阅读:
    html5 File api 上传案例
    DOM操作
    箭头函数
    js 高级函数
    导入导出封装
    函数
    哲学/文学
    qtMd5 加密算法
    生活感悟
    C# 小技巧
  • 原文地址:https://www.cnblogs.com/TeyGao/p/3521657.html
Copyright © 2011-2022 走看看