空值比较搜索条件
来源:互联网 发布:制作展板用什么软件 编辑:程序博客网 时间:2024/06/05 20:52
NULL 值表示列的数据值未知或不可用。NULL 值与零(数字值或二进制值)、零长度的字符串或空白(字符值)的含义不同。相反,空值可用于区分输入的是零(数字列)或空白(字符列)还是无数据输入(NULL 可用于数字列和字符列)。
可以通过以下两种方式在允许空值的列中输入 NULL 值(根据 CREATE TABLE 语句的指定):
◆如果无数据输入并且列或数据类型上无默认的或 DEFAULT 约束,Microsoft® SQL Server™ 2000 将自动输入 NULL 值。
◆通过键入不带引号的 NULL 显式输入 NULL 值。如果在字符列中键入带引号的 NULL,则将其视为字母 N、U、L、L 而非空值。
当检索到空值时,应用程序通常会在适当的位置显示 NULL 或 (NULL) 或 (null) 这样的字符串。例如,titles 表中的 advance 列允许空值:
SELECT title_id, type, advance
FROM pubs.dbo.titles
WHERE advance IS NULL
下面是结果集:
title_id type advance
-------- ------------ -------
MC3026 UNDECIDED (null)
PC9999 popular_comp (null)
(2 row(s) affected)
比较空值
比较空值时必须小心。比较行为取决于选项 SET ANSI_NULLS 的设置。
当 SET ANSI_NULLS 为 ON 时,如果比较中有一个或多个表达式为 NULL,则既不输出 TRUE 也不输出 FALSE,而是输出 UNKNOWN。这是因为,未知值不能与其它任何值进行逻辑比较。这种情况发生在一个表达式与 NULL 单词进行比较,或者两个表达式相比,而其中一个表达式取值为 NULL 时。例如,当 ANSI_NULLS 为 ON 时,以下比较总是输出 UNKNOWN:
ytd_sales > NULL
只要变量包含 NULL 值,下列比较也输出 UNKNOWN:
ytd_sales > @MyVariable
使用 IS NULL 或 IS NOT NULL 子句测试 NULL 值。这将增加 WHERE 子句的复杂性。例如,表 Northwind Customers 中的 Region 列允许空值。如果使用 SELECT 语句不仅测试其它值还测试空值,则必须包括 IS NULL 子句:
SELECT CustomerID, CompanyName, Region
FROM Northwind.dbo.Customers
WHERE Region IN ('WA', 'SP', 'BC')
OR Region IS NULL
Transact-SQL 支持在与空值进行比较时,允许比较运算符返回 TRUE 或 FALSE。通过设置 ANSI_NULLS OFF 可将该选项激活。当 ANSI_NULLS 为 OFF 时,如果 ColumnA 包含空值,则比较操作 ColumnA = NULL 返回 TRUE;如果 ColumnA 除包含 NULL 外还包含某些值,则比较操作返回 FALSE。此外,两个都取空值的表达式的比较也输出 TRUE。当 ANSI_NULLS 设置为 OFF 时,SELECT 语句将返回 Customer 表中所有 Region 为空值的行:
SELECT CustomerID, CompanyName, Region
FROM Northwind.dbo.Customers
WHERE Region = NULL
不论 ANSI_NULLS 如何设置,对于 ORDER BY、GROUP BY 和 DISTINCT 关键字空值总被视为是相等的。此外,允许 NULL 的唯一索引或 UNIQUE 约束只能包含一个带有 NULL 键值的行。后面带有 NULL 的行将被拒绝。属于主键的任何列中都不能含有 NULL。
涉及 NULL 的计算均取值为 NULL,这是因为只要有一个因子为未知,结果肯定是 UNKNOWN。例如,如果 column1 为 NULL,则 column1 + 1 取值为 NULL。
当搜索的列中包括定义为允许空值的列时,可以通过下列模式查找数据库中的空值或非空值:
WHERE column_name IS [NOT] NULL
详文参考:http://www.xker.com/page/e2007/1025/36838.html
- 空值比较搜索条件
- 数据库查询之(Ⅰ)条件(比较、范围、集合、模糊、空值)查询
- oracle 条件查询,比较运算符,逻辑运算符,特殊运算符,判断空值,大小写敏感,多行,多列子查询
- oracle 条件查询,比较运算符,逻辑运算符,特殊运算符,判断空值,大小写敏感,多行,多列子查询
- oracle 条件查询,比较运算符,逻辑运算符,特殊运算符,判断空值,大小写敏感,多行,多列子查询
- 锋利的SQL2014:使用NULL比较搜索条件
- oracle 中的空值比较
- js数据类型,空值,比较
- mybatis中数组空值查询条件
- 语法糖:空值条件运算符
- 搜索条件
- 搜索条件
- Access 非空条件
- 查询条件清空
- 判断条件中,如何比较字段值。
- ligerui ligerGrid 先填写搜索条件,在查询 因为如果数据比较多时,这样子比较消耗流量
- T-SQL 搜索条件
- 多条件搜索 sql
- 新手必读:六大流程助您搭建个人网站
- System.Array类自动继承泛型接口
- 关于for循环的3个参数的新的理解
- 散列与散列码
- Zend Framework 中的 Php 编码标准 (五) - 错误与异常
- 空值比较搜索条件
- WM5/6常见进程列表
- Windows CE 6.0 安装顺序
- 0xBAADF00D以及常见的Windows内存分配值
- An easy way to update (patch) Linux kernel using yum
- 理解FMS连接过程
- 自动分类之-贝叶斯原理
- 嵌入式微处理器结构与应用
- #pragma DATA_ALIGN作用