这是我正在使用的代码:
SELECT 'HOPE', RPRAWRD_AIDY_CODE, COUNT(DISTINCT RPRAWRD_PIDM) AS NumberOfStudents, Sum(RPRAWRD_PAID_AMT) AS AmountPaid
FROM FAISMGR.RPRAWRD, FAISMGR.RFRBASE
WHERE RPRAWRD_AIDY_CODE = '1213'
AND RPRAWRD_FUND_CODE = RFRBASE_FUND_CODE
AND RPRAWRD_AWST_CODE = 'ACPT'
AND RPRAWRD_PAID_AMT > 0
AND RFRBASE_FSRC_CODE = 'HOPE'
GROUP BY RPRAWRD_AIDY_CODE;
结果共有3952条记录。
一些记录在RPRAWRD_PAID_AMT中包含NULL,如果我添加
AND RPRAWRD_PAID_AMT IS NOT NULL
到WHERE子句,我得到完全相同的结果:3952条记录。所以,我的问题是:> 0是否排除空值,因为它们评估为false,使得IS NOT NULL不必要?
答案 0 :(得分:1)
RPRAWRD_PAID_AMT > 0
如果true
的值大于RPRAWRD_PAID_AMT
,将仅返回0
。与null
相比,结果为unknown
,这也是false
。
所以,是的,您不需要额外的null
检查。
答案 1 :(得分:0)
SQL中NULL
上的大多数操作返回NULL
,在条件句中评估为false。
mysql> SELECT NULL > 0;
+----------+
| NULL > 0 |
+----------+
| NULL |
+----------+
1 row in set (0.00 sec)
所以是的,RPRAWRD_PAID_AMT > 0
将过滤掉空值,但明确不会有害。