zoukankan      html  css  js  c++  java
  • [转]sql server 的ANSI_NULLS设置

    sql server 的ANSI_NULLS设置

    当 SET ANSI_NULLS 为 ON 时,表示SQL语句遵循SQL-92标准。当 SET ANSI_NULLS 为 OFF 时,表示不遵从 SQL-92 标准。

    SQL-92 标准要求对空值(NULL)的等于 (=) 或不等于 (<>) 比较取值都为 FALSE,即对所有字段的进行操作:= NULL 或者 <>NULL,返回的都是false。如果用这2个条件进行查询都将查询不到任何的数据。即使 column_name 中存在空值,使用 WHERE column_name = NULL 的 SELECT 语句仍返回零行。即使 column_name 中存在非空值,使用 WHERE column_name <> NULL 的 SELECT 语句仍返回零行。

    此外,使用 WHERE column_name <> XYZ_value 的 SELECT 语句返回所有非 XYZ 值和非 NULL的行。为使脚本按预期运行,不管 ANSI nulls 数据库选项或 SET ANSI_NULLS 的设置是什么,在可能包含空值的比较中使用 IS NULL 和 IS NOT NULL。

    库表:

    [id] [int] IDENTITY(1,1) NOT NULL,

    [value] [varchar](50) NULL,

    [mark] [varchar](50) NULL,

    数据:

    INSERT INTO [FinanceStock].[dbo].[Table_Test]

    ([value])

    VALUES

    (''),(' '),('v'),(NULL)

    语句1

    set ANSI_NULLS ON

    GO

    SELECT [id]

    ,[value]

    FROM [FinanceStock].[dbo].[Table_Test]

    WHERE [value] <> NULL

    GO

    结果为空

    语句2

    set ANSI_NULLS ON

    GO

    SELECT [id]

    ,[value]

    FROM [FinanceStock].[dbo].[Table_Test]

    WHERE [value] = NULL

    GO

    结果为空

    语句3

    set ANSI_NULLS OFF

    GO

    SELECT [id]

    ,[value]

    FROM [FinanceStock].[dbo].[Table_Test]

    WHERE [value] <> NULL

    GO

    符合条件的记录3条

    语句4

    set ANSI_NULLS OFF

    GO

    SELECT [id]

    ,[value]

    FROM [FinanceStock].[dbo].[Table_Test]

    WHERE [value] = NULL

    GO

    符合条件的记录1条

    语句5

    set ANSI_NULLS OFF

    GO

    SELECT [id]

    ,[value]

    FROM [FinanceStock].[dbo].[Table_Test]

    WHERE [value] <> 'V'

    GO

    符合条件的记录2条

    生活中的不便,用软件解决,学而不用,白学了-----红马車

  • 相关阅读:
    WAF绕过方法
    ”非常危险“的Linux命令
    CSRF--花式绕过Referer技巧
    安卓手机的后门控制工具SPADE
    基于RedHat发行的Apache Tomcat本地提权漏洞
    SQL注入--宽字节注入
    MySQL提权
    CF1067D. Computer Game(斜率优化+倍增+矩阵乘法)
    CF1063F. String Journey(后缀数组+线段树)
    BZOJ4732. [清华集训2016]数据交互(树链剖分+线段树+multiset)
  • 原文地址:https://www.cnblogs.com/grj001/p/12225677.html
Copyright © 2011-2022 走看看