一、算术运算(+、-、 *、 /)
包含NULL的算术运算中,不会报错且结果均为NULL。如:
5 + NULL;
NULL / 9 ;
NULL / 0
结果均为NULL
二、比较运算(=、<>、!=、>=、<=)
比较运算符不能取出值为NULL的记录。如:
叉子的purchase_price为NULL,
SELECT product_name
FROM product
WHERE purchase_price <> 2800
或
SELECT product_name
FROM product
WHERE purchase_price = NULL
结果均不会返回‘叉子’记录。
希望选取NULL记录时,需要用 IS NULL运算符;
希望选取不是NULL记录时,需要用 IS NOT NULL运算符。
三、逻辑运算(AND、 OR)
SQL的逻辑运算是三值运算:真、假、不确定。
四、聚合函数
-
COUNT( ):记录表中的记录数(行数)
COUNT( * )会得到包含NULL的数据行数,而COUNT(列名)会得到NULL之外的数据行数。
-
SUM( ):
算术运算中如果存在NULL,结果一定是NULL。但是再聚合函数中,如果以列名为参数,那么在计算之前就已经把NULL排除在外了,所以结果不为NULL。
注:“排除在外” 与 “等价为0” 不相同。 -
AVG( ):
计算平均值时,因为在计算之前就已经把NULL排除在外了,所以分母为非NULL的数据行数。
如果想将NULL作为0进行计算(如将(1+2+3)/3 变成(1+2+3+0+0)/5 ),则需要 -
MAX( ):
-
MIN( ):
五、GROUP BY
聚合键(分组列)中包含NULL时,在结果中会以“空行”的形式表现出来。如:
六、ORDER BY
排序键中包含NULL时,会在开头或末尾进行汇总(究竟是开头还是末尾,不同DBMS规定不同)。