以下的文章主要向大家讲述的是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 列允许空值:
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 为> ytd_sales > NULL
只要变量包含 NULL 值,下列比较也输出 UNKNOWN:
ytd_sales > @MyVariable
使用 IS NULL 或 IS NOT NULL 子句测试 NULL 值。这将增加 WHERE 子句的复杂性。例如,表 Northwind Customers 中的 Region 列允许空值。假如使用 SELECT 语句不仅测试其它值还测试SQL Server空值比较则必须包括 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
以上的相关内容就是对SQL Server空值比较搜索条件的介绍,望你能有所收获。
有些使用本本的朋友可能会发现,右下角通知栏区域会无法显示电源按钮,导致在插上电源或者是使用电池的时候都无法进行区分。造成这种情况大部分都是因为使用了第三方修改过的系统版本或者对于系统优化过度,所以今天就来解决这个问题。 第一步:在开始菜单的搜索窗口输入“gpedit.msc”,进入组策略编辑器,依...
最近一些Windows 7用户反馈说,自己在截屏的时候出现黑屏,导致自己截的图黑呼呼一片。这个问题该怎么解决?今天小编就为大家提供一个解决的方法。 步骤 1 在windows xp时代,很多用户都曾被视频截图后的“全黑图片”困扰。对此,在解决本地播放时出现的截图变黑问题,一般有两个方法可以用来解...
经常听见有人说用Windows 7玩网络游戏的时候网络延时比较高,也就是ping比平时xp的时候高一点,一直找不到原因,很苦恼。今天我们终于找到理由了,原来是Windows 7的一个服务在作怪,这个服务叫:Multimedia Class Scheduler,就是这个服务让我的PING如此高,问题是...
最近小编在使用Windows 7的时侯遇到一个问题,就是应用程序和快捷方式不能锁定到任务栏,我当时不知道怎么回事,但是很多现有的方法都不能解决这个问题。现在我把我的解决的方法分享给大家以作参考。 问题分析 经过思考,初步判断出现该问题的原因是由于使用第三方优化软件消除快捷方式的小箭头引起的。...
Windows 7电脑开机后,虽然连上了网络,但是网络图标却一直不停地转圈,这个问题该怎么修复呢?今天小编就告诉大家解决的方法吧。 解决方法: 1、假如是打补丁后出现的问题。 第一时间卸载驱动精灵,并且把它的文件夹彻底删除,要干净,用360粉碎! 2、开启network list ser...
我们都知道连续按 Shift 五次可以启用或关闭粘滞键,但是假如我们不需要粘滞键,想要将它禁用该怎么设置呢?现在小编就教你解决这个问题的方法吧。 具体操作步骤如下: 1、首先依次点击“开始—控制面板—轻松访问中心—使键盘更容易进行使用”项; 2、在弹出来的界面中,取消勾选“启用粘滞键”...