Một biến vị ngữ hữu ích để so sánh các giá trị có thể chứa giá trị NULL là vị từ DISTINCT. So sánh hai cột bằng cách sử dụng so sánh bình đẳng (COL1 = COL2) sẽ đúng nếu cả hai cột chứa giá trị không null bằng nhau. Nếu cả hai cột là null, kết quả sẽ là false bởi vì null không bao giờ bằng bất kỳ giá trị nào khác, thậm chí không phải là một giá trị null khác. Sử dụng vị từ DISTINCT, các giá trị null được coi là bằng nhau. Vì vậy, COL1 KHÔNG PHÂN TÍCH từ COL2 sẽ là true nếu cả hai cột chứa giá trị không null bằng nhau và cũng có thể khi cả hai cột là giá trị null.
DB2 Null Handling
Điều đó có nghĩa rằng tất cả các hoạt động so sánh sẽ là sai lầm bởi vì bạn đang so sánh một giá trị không biết đến một cái gì đó. Vì vậy, không có vấn đề mà so sánh bạn sử dụng (chỉ có IS NULL/IS NOT NULL hoạt động làm việc!), Nó sẽ là sai.
Nếu bạn muốn truy vấn để làm việc bạn nên sử dụng một cái gì đó giống như
SELECT *
FROM SOMESCHEMA.SOMETABLE
WHERE COALESCE(SYSDATE, TIMESTAMP_FORMAT('0001-01-01 23:59:59', 'YYYY-MM-DD HH24:MI:SS')) > @A
NẾU DB2 có "ANSI NULL" ngữ nghĩa thì chỉ có các nhà điều hành nhị phân đó là sự thật nên " IS NULL ", AFAIK. –
@pst DB2 [có ANSI] (http://www.dbforums.com/db2/765612-handing-null-values-db2.html#post2808106), ý của bạn là gì bởi _the toán tử nhị phân duy nhất đúng là "IS NULL" _? –