2013-07-25 112 views
0

這裏是我的工作代碼:SQL:比較和空值

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,使得不是NULL是不必要的?

+0

是的 - 當你已經有了'RPRAWRD_PAID_AMT> 0'時,將會選擇'** no **在'RPRAWRD_PAID_AMT'中有'NULL'的行。因此,添加「不是NULL」確實沒有意義,也不需要 –

回答

1
RPRAWRD_PAID_AMT > 0 

只會返回true如果RPRAWRD_PAID_AMT值大於0 greather。比較null結果unknown,這也是false

所以是的,你不需要額外的null檢查。

0

SQL中NULL的大多數操作返回NULL,在條件中它的計算結果爲false。

mysql> SELECT NULL > 0; 
+----------+ 
| NULL > 0 | 
+----------+ 
|  NULL | 
+----------+ 
1 row in set (0.00 sec) 

所以,是的,RPRAWRD_PAID_AMT > 0會過濾掉空值,但它不會傷害要明確。