认清SQLserver中空值的概念

了解SQL Server中的空值

在SQL Server中,空值是一个非常重要的概念。在数据库中,经常会有值为NULL的情况出现,因此,正确理解并操作空值对于数据库的操作极其重要。本文将分别简要介绍NULL值的含义以及SQL Server中NULL值的特性。

1. NULL值的含义

1.1 NULL定义

NULL是缺少任何信息的一个特殊标志,NULL既不是数值、字符、逻辑值,甚至不是空字符串或者仅包含空格的字符串,它是一种定义良好的值,代表缺少信息或未知的信息。严格来说,NULL不是值,不过这里为了方便称之为“值”。

1.2 NULL的含义

NULL可被用来表示很多意义含义,如:

未知: 一个列的值尚未知,例如,在某个订单中商品的价格可能是未知的。

无效: 一个列的值是无效的,例如,某个列存储着“身高”值,但是有人身高是负数,这样的值就是无效的。

不适用:一个列的值是不适用的,例如,某个订单中某个商品可能不需要特定的配件,这样配件的价格就不适用于该商品。

2. SQL Server中NULL值的特性

2.1 空值与等于(=)

在SQL Server中,NULL值不能与“=”运算符使用,例如:

SELECT FirstName,LastName

FROM Employee

WHERE FirstName = NULL

该查询不会返回任何数据,因为NULL不能与“=”运算符比较。正确的方式是使用“IS NULL”或者“IS NOT NULL”判断NULL值的存在,例如:

SELECT FirstName,LastName

FROM Employee

WHERE FirstName IS NULL

2.2 空值与比较(<, <=, >, >=)

空值与比较运算符相比较,结果都会被判定为未知(unknown),例如:

SELECT FirstName,LastName

FROM Employee

WHERE Salary > NULL

即使某个员工的薪水是NULL,此查询也不返回该员工。正确的代码应该是这样的:

SELECT FirstName,LastName

FROM Employee

WHERE Salary IS NOT NULL AND Salary > 5000

使用“IS NOT NULL”过滤掉空值,再使用比较运算符实现数据的筛选。

2.3 空值与计算

在SQL Server中,含有NULL值的表达式在计算中返回NULL。

NULL与数字的运算:如果一个表达式有一个或多个NULL值,则该表达式的结果也为NULL。如果表达式中包含的所有值都不是NULL,那么结果将为数值。

NULL与字符串的运算:任何结合NULL值与非NULL值的字符串的运算结果都为NULL。

NULL逻辑运算:在所有逻辑运算中,如果一个运算中包含NULL,则运算的结果也是NULL。

3. 总结

在SQL Server中,识别和正确处理NULL值是十分重要的,NULL值不等于空字符串或者空值,有效的处理NULL值可以避免现实和逻辑问题。

数据库标签