SQL Server空值比较的实际搜索条件

数据库 SQL Server
我们今天主要向大家讲述的是SQL Server空值比较的实际搜索条件,以下就是文章的主要内容的详细解析,望你能有所收获。

以下的文章主要向大家讲述的是SQL Server空值比较的实际搜索条件,NULL 值表示列的相关数据值未知或是不可用。NULL 值和零(数字值或二进制值)、零长度的字符串或空白(字符值)的含义不同。

相反,空值可用于区分输入的是零(数字列)或空白(字符列)还是无数据输入(NULL 可用于数字列和字符列)。

可以通过以下两种方式在允许空值的列中输入 NULL 值(根据 CREATE TABLE 语句的指定):

如果无数据输入并且列或数据类型上无默认的或 DEFAULT 约束,Microsoft® SQL Server™ 2000 将自动输入 NULL 值。

通过键入不带引号的 NULL 显式输入 NULL 值。如果在字符列中键入带引号的 NULL,则将其视为字母 N、U、L、L 而非空值。

当检索到空值时,应用程序通常会在适当的位置显示 NULL 或 (NULL) 或 (null) 这样的字符串。例如,titles 表中的 advance 列允许空值:

  1. SELECT title_id, type, advance FROM pubs.dbo.titles WHERE advance IS NULL 

下面是结果集:

  1. title_id type advance -------- ------------ ------- MC3026 UNDECIDED (null) PC9999 popular_comp (null) (2 row(s) affected) 

比较空值

比较空值时必须小心。比较行为取决于选项 SET ANSI_NULLS 的设置。

  1. SET ANSI_NULLS 为> ytd_sales > NULL 

只要变量包含 NULL 值,下列比较也输出 UNKNOWN:

  1. ytd_sales > @MyVariable 

使用 IS NULL 或 IS NOT NULL 子句测试 NULL 值。这将增加 WHERE 子句的复杂性。例如,表 Northwind Customers 中的 Region 列允许空值。如果使用 SELECT 语句不仅测试其它值还测试SQL Server空值比较则必须包括 IS NULL 子句:

  1. 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 为空值的行:

  1. 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。

当搜索的列中包括定义为允许空值的列时,可以通过下列模式查找数据库中的空值或非空值。

  1. WHERE column_name IS [NOT] NULL 

以上的相关内容就是对SQL Server空值比较搜索条件的介绍,望你能有所收获。

【编辑推荐】

  1. SQL Server 服务管理器的正确运行方式
  2. SQL Server 浏览器的正确应用
  3. 解决SQL Server数据库中的安全疑难问题的方案
  4. SQL Server删除群集的实例演示
  5. SQL Server主键列的正确查看方式
责任编辑:佚名 来源: TT中国
相关推荐

2010-04-30 11:41:39

Oracle常用函数

2010-07-09 12:49:41

SQL Server自

2011-02-24 13:55:12

SQL Server可空字段非空值

2010-05-12 09:42:24

MySQL 列值比较

2010-07-08 16:44:21

SQL Server索

2010-07-21 15:22:07

2010-07-07 11:03:21

SQL Server索

2010-11-09 15:18:37

SQL Server多

2010-07-23 09:25:50

SQL Server导

2010-07-12 17:37:03

SQL Server

2010-06-30 13:07:17

SQL Server函

2010-06-28 12:39:14

SQL Server数

2010-07-16 11:10:52

SQL server

2010-06-30 17:56:06

2010-07-02 13:26:56

SQL Server处

2010-09-13 16:39:36

sql server触

2011-04-01 14:14:42

SQL Server空值

2010-07-05 08:31:25

SQL Server快

2010-07-07 11:28:12

SQL Server索

2010-07-08 16:00:51

SQL Server线
点赞
收藏

51CTO技术栈公众号