当 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条

sql server 的ANSI_NULLS设置的更多相关文章

  1. 如何对SQL Server 2005进行设置以允许远程连接(转载)

    如何对SQL Server 2005进行设置以允许远程连接(转载) 在尝试从远程计算机连接到 Microsoft SQL Server 2005 实例时,可能会接收到错误消息.在使用任何程序连接到 S ...

  2. SQL Server 2005中设置Reporting Services发布web报表的匿名访问

    原文:SQL Server 2005中设置Reporting Services发布web报表的匿名访问 一位朋友提出个问题:集成到SQL Server 2005中的Reporting Services ...

  3. 【关于服务器端SQL Server 2008的设置】 使其他客户端机可通过ODBC数据源可访问

    服务器系统:Server 2003 数据库:SQL Server 2005 服务器配置:开启服务:server.workstation(这两个服务对于提供局域网共享有很大作用) 关闭防火墙 开启gue ...

  4. 使用SQL Server 2005作业设置定时任务

    公司有一个老项目由于直接把终端拍摄的图片以二进制的形式保存到数据库中,数据库比较大所以需要经常删除这些冗余数据,手动删除费时费力,项目组长让我把这些操作变成自动的,每天执行一次,只保留最近两个月的图片 ...

  5. 使用SQL Server 2005作业设置定时任务【转】

    1.开启SQL Server Agent服务 使用作业需要SQL Agent服务的支持,并且需要设置为自动启动,否则你的作业不会被执行. 以下步骤开启服务:开始-->>>运行--&g ...

  6. SQL Server中通过设置非聚集索引(Non-Clustered index)来达到性能优化的目的

    首先我们一下,在SQL Server 2014 Management Studio中,如何为一张表设置Non-Clustered index 具体可以参考  https://docs.microsof ...

  7. MSSQL SQL Server代理 作业 设置(调用存储过程)

    1.新建作业名 “生成分区文件及文件组“ 2.新建  步骤  名 “CreatePartTable” 步骤名:CreatePartTable 类型:Transact-SQL 脚本(T-SQL) 数据库 ...

  8. SQL server 2008 防火墙设置

    zh以前应为有特殊需求,需要在副武器外连接数据库,需要打开TCPIP服务. 但是因为有防火墙,经常连接不成功. 根据网上的资料总结,写了一个小的bat,来解决这个问题: @echo ========= ...

  9. sql server UI怎么设置自增加id?

    设置表结构的时候,设置标识列就可以了啊 来自为知笔记(Wiz)

随机推荐

  1. linux 下 apt命令集详解

    apt命令用法 packagename指代为软件包的名称 apt-get update 在修改/etc/apt/sources.list或/etc/apt/preferences之後运行该命令.此外您 ...

  2. Python Socket单线程+阻塞模式

    Python之旅]第五篇(二):Python Socket单线程+阻塞模式 python Socket单线程 Socket阻塞模式 串行发送 摘要:  前面第五篇(一)中的一个Socket例子其实就是 ...

  3. 016--JLE JNG(小于等于)

    一.指令格式 条件转移指令 JLE/JNG 格式: JLE/JNG 标号地址 功能: 小于等于/不大于  时转到标号地址 JNG    有符号 不大于         则跳转    //Jump if ...

  4. 昨天做了一个使用javamail发送文件的demo

    记录一下过程. 两种版本第一个demo是纯java文件.一个就可以,是我在网上搜索到的,第二个demo是我在ssh框中中写的jsp页面demo 1.java版本: package com.zq.www ...

  5. (转)PHP模板smarty简单入门教程

    转之--http://blog.163.com/zf_2011@126/blog/static/166861361201062595057962/ 如何在smarty中开始我们程序设计.PHP代码:- ...

  6. linux 'more' command.

    more命令,功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上. more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会 ...

  7. MySQL拷贝表的几种方式

    假如我们有以下这样一个表: id      username    password ----------------------------------- 1       admin       * ...

  8. iOS 上传项目常见问题

    一. Archive项目 时,出现"Your build settings specify a provisioning profile with the UUID "XXX&qu ...

  9. 重新开始学习javase_集合_Set

    一,Set之HashSet(转:http://blog.csdn.net/zheng0518/article/details/42197337) 1.    HashSet概述: HashSet实现S ...

  10. 你好,C++(36)人参再好,也不能当饭吃!6.3 类是如何面向对象的

    6.3  类是如何面向对象的 类作为C++与面向对象思想结合的产物,作为面向对象思想在C++中的载体,它的身上流淌着面向对象的血液.从类成员的构成到类之间的继承关系再到虚函数,到处都体现着面向对象封装 ...