sql server 2008 NULL值
SQL支持用NULL符号来表示缺少的值,它使用的是三值谓词逻辑,计算结果可是以TURE、FALSE或UNKNOWN。
SQL中不同语言元素处理NULL和UNKNOWN的方式也有所不同,如果逻辑表达式只涉及已经存在的值,那么最终的计算结果只有二种,要么TRUE要么FALSE。但是当逻辑表达式涉及缺少的值时,其计算结果就是UNKNOWN。如,当谓词salary>0:当salary等于1000时,表达式结果为TRUE,查询过滤条件(WHERE和HAVING子句)能够让表达式计算结果为TRUE的那些行或组被返回;当salary等于-100时,表达式计算结果为FALSE,查询过滤条件(WHERE和HAVING子句)能够让表达式计算结果为FALSE的那些行或组被返回;当salary是NULL时,表达式的计算结果就是UNKNOWN,查询过滤条件(WHERE和HAVING子句)不返回任何行。
在不同的语言元素中,SQL对UNKNOWN的处理也有所不同。SQL对查询过滤条件处理的正确定义是:“接受TRUE”就意味着要过滤掉FALSE和UNKNOWN。反之,对SQL对CHECK约束处理的正确定义是:“拒绝FALSE”就意味着接受TRUE和UNKNOWN。如果SQL使用的是二值谓词逻辑,那么“接受TRUE”和“拒绝FALSE”就不会有什么区别。但在三值谓词逻辑中,“接受TRUE”则会拒绝UNKNOWN和FALSE,而拒绝FALSE则会接受UNKNOWN和TRUE。前面的例子使用了谓词salary>0,一个取值为NULL的salary将导致表达式计算结果为UNKNOWN。如果这个谓词出现在查询的WHERE子句中,则salary列取值为NULL的行也将会过滤掉。如果在表的CHECK约束中也包含这个谓词条件,则salary列取值为NULL的行也将被过滤掉。
UNKNOWN对它取反时,结果还是UNKNOWN。两个NULL值进行比较的表达式,其计算结果还是UNKNOWN。因为NULL值代表一个缺少的值或不可知的值,为此SQL提供了两个谓词IS NULL和IS NOT NULL,用来取代=NULL和<>NULL。
在用于比较和排序目的的不同元素中,SQL处理NULL的方式也有所不同,一些元素认为两个NULL值彼此相等,而另一些则认为这它们不相等。
例如,当进行分组和排序时,认为二个NULL值是相等的。也就是说GROUP BY子句会在每个组中重新组织所有的NULL值,就像有具体值的列一样;
sql server 2008 NULL值的更多相关文章
- SQL SERVER 2008 字段值合并
/** * 通过 FOR XML PATH 语句,可以将字段的值进行合并. **/ CREATE TABLE tb_child ( name ), hobby ) ) go INSERT INTO t ...
- SQL SERVER 2008 设置字段默认值为当前时间
在某些情况下需要对某条记录添加上时间戳,比如用户注册,需要记录用户的注册时间,在SQL SERVER 2008中可以通过 1. 添加新字段 2. 数据类型设置为smalldatetime 3. 默认值 ...
- SQL Server 2008 各种DateTime的取值范围
SQL Server 2008除了DateTime和SmallDateTime之外,又新增了四种时间类型,分别为:date,time,datetime2和datetimeoffset. 各时间类型范围 ...
- Sql Server 2008和2000查询表的字段和注释
-- SQL Server 2008 SELECT 表名 = d.name, 表说明 = case when a.colorder=1 then isnull(f.value,'') else '' ...
- SQL SERVER 2008向ORACLE 11G迁移示例
来源于:http://www.cnblogs.com/hiizsk/ 由SQL SERVER 2008向ORACLE 11G迁移过程记录之一-表 使用Oracle Sql Developer将SQL ...
- MS Sql server 2008 学习笔记
数据库中常用的概念 Sql本身是一个服务器,没有界面,Management Studio 只是一个SQL Server管理工具而已,不是服务器. Sql server 在管理工具下面的服务SQL S ...
- SQL Server 2008 FILESTREAM特性管理文件
在SQL Server 2008中,新的FILESTREAM(文件流)特性和varbinary列配合,你可以在服务器的文件系统上存储真实的数据,但可以在数据库上下文内管理和访问,这个特性让SQL Se ...
- SQL Server 2008 R2——学习/练习/错误/总结/搜集
==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完 ...
- sql server 2008 数据库的完整性约束
一.数据库完整性概述 1.数据库的完整性: ①数据库的完整性是指数据的正确性和相容性 ②数据库完整性是防止不合语义或不正确的数据进入数据库 ③完整性体现了是否真实地反映现实世界 例: 学 ...
随机推荐
- SqlServer & Windows 可更新订阅立即更新启用分布式事务协调器(MSDTC)
原文:SqlServer & Windows 可更新订阅立即更新启用分布式事务协调器(MSDTC) 在可更新订阅中,在订阅设置更新方法,将 "排队更新" 设置为 " ...
- C# 屏蔽Ctrl Alt Del 快捷键方法+屏蔽所有输入
原文:C# 屏蔽Ctrl Alt Del 快捷键方法+屏蔽所有输入 Win32.cs /* * * FileCreate By Bluefire * Used To Import WindowsApi ...
- JAVA 与 PHP 的不同和相同
Java语言与PHP语言因为都可以做web应用开发,所以总有入门学习这2种语言的入门者会问Java和PHP哪一个好.讨论语言的好坏是一件不太明智的事情,我认为只能去说那一种编程语言更加适合干什么,人与 ...
- How to Use the Dynamic Link Library in C++ Linux (C++调用Delphi写的.so文件)
The Dynamic Link Library (DLL) is stored separately from the target application and shared among dif ...
- WD-线程KTHREAD结构(WRK)
线程是系统处理器调度的基本单元,而且线程调度是在内核层完成的,所以,KTHREAD 的许多域都跟Windows 的线程调度机制有关. 找到进程的线程可以使用!process 1 2 3 kd> ...
- Ansible的安装与使用初探
一.环境准备 网络配置 管理端:192.168.237.201 受控端:192.168.237.202.192.168.237.203(一共2台) 硬件信息 CPU:1核 内存:512MB 磁盘:10 ...
- 注册表Demo
一.获取安装程序信息 #include <windows.h> #include <iostream> #include <string> #include < ...
- Codility----OddOccurrencesInArray
Task description A non-empty zero-indexed array A consisting of N integers is given. The array conta ...
- SYN4104型 数字网同步时钟
SYN4104型 数字网同步时钟 产品概述 SYN4104型数字网同步时钟是由西安同步电子科技有限公司精心设计.自行研发生产的一款高精度锁相时钟频率源,接收GPS信号,使恒温晶振输出频率同步于GPS卫 ...
- Python一基本数据类型(dict)
一. 字典的简单介绍 字典(dict)是python中唯一的一个映射类型.他是以{ }括起来的键值对组成. 在dict中key是 唯一的. 在保存的时候, 根据key来计算出一个内存地址. 然后 ...