奇怪的資料庫問題

原本已在工作環境中,運行多年的一個 SQL 程式,日前卻莫名其妙的無法正常運作。(查不出資料來)

原來的 SQL 程式:
SELECT a.cu_no,a.sa_ivno,a.sa_date,a.od_id,a.sa_amt,a.ie_user,a.ie_lymd,a.od_satyp,b.cu_snam,a.cu_ar
FROM TableA a
INNER JOIN TableB b ON a.cu_sale=b.cu_sale
WHERE sa_date<=getdate()-1 and sa_amt>0 and
sa_ivno NOT IN (SELECT sa_invoice FROM TableC)
ORDER BY sa_date,cu_no,sa_ivno;

經過多方的查找,才找到真正問題的原由;主因是資料數據含有 Null
如果只單純修正含 Null 值的資料,就只能改正現在的問題;但日後若是再發生 Null 情形,也會再產生查不到資料的現象。

所以需要重新修正原程式,以避免日後再發生 Null 的情形。
新修正程式如下:
SELECT a.cu_no,a.sa_ivno,a.sa_date,a.od_id,a.sa_amt,a.ie_user,a.ie_lymd,a.od_satyp,b.cu_snam,a.cu_ar
FROM TableA a
INNER JOIN TableB b ON a.cu_sale=b.cu_sale
WHERE sa_date<=getdate()-1 and sa_amt>0 and
not exists(select 1 from TableC c (nolock) where a.sa_ivno=c.sa_invoice)
ORDER BY sa_date,cu_no,sa_ivno;

沒有留言: