使用NULL的注意点(SQL)
May 7, 2024
Content
#
- NULL与别的值进行+-*/等计算操作(包括在大多数函数中使用NULL)后,结果是NULL(标量表达式)。NULL与别的值进行=、 >、<等比较操作后,结果是Unknown(断言)。
- 在where/on/having和if/case when中,只有True才使条件成立(即Unknown当作False来处理)。
- 包含外键约束和Check约束的字段允许NULL(即约束只当条件为False时出错,Unknown是不管的)。
- 包含唯一约束(unique index)的字段只允许一个NULL的行,再插入或更新该字段为NULL的行会报字段重复的错误。
- GROUP BY时,所有NULL被视为一组。
- ORDER BY时,所有NULL排在一起,但NULL排在非空值的前面(如SQL Server)还是后面(如Oracle),SQL标准未规定。
- 聚集函数(SUM/AVG/MAX/MIN/COUNT)忽略NULL的行。
- declare的变量,在未赋值之前为NULL。
- 与NULL处理相关的运算符和函数
- IS NULL/IS NOT NULL:用这两个运算符来判断一个值是否为NULL,而不是=或< >。
- ISNULL/COALESCE:取第一个非空值(注意两个函数的数据类型转换规则不同)。
- NULLIF(a,b):等价于CASE WHEN a = b THEN NULL ELSE a END。
From
#
Links
#