LNNVL là một nhà tiên tri được xây dựng trong hàm trả về TRUE cho các điều kiện đánh giá thành FALSE hoặc UNKNOWN và trả về FALSE cho các điều kiện đánh giá thành TRUE. Câu hỏi của tôi là điều gì sẽ là lợi ích của việc trả lại điều ngược lại với điều kiện sự thật thay vì chỉ xử lý các giá trị NULL?
Ví dụ: giả sử bạn có một bảng Emp với các cột StartCommission và CurrentCommission có thể chứa null. Các giá trị sau chỉ trả về các hàng không có giá trị null:
SELECT * FROM Emp WHERE StartCommission = CurrentCommission;
Nếu bạn muốn bao gồm các hàng trong đó hoa hồng là null, bạn có thể làm một cái gì đó như thế này:
SELECT * FROM Emp WHERE StartCommission = CurrentCommission
OR StartCommission IS NULL OR CurrentCommission IS NULL;
Có vẻ như một hàm sẽ tồn tại để rút ngắn cú pháp này, nhưng sử dụng LNNVL sẽ trả về tất cả các bản ghi không bằng nhau và tất cả các bản ghi có giá trị null.
SELECT * FROM Emp WHERE LNNVL(StartCommission = CurrentCommission);
Thêm KHÔNG vào điều này chỉ trả về các hàng không có giá trị null. Dường như với tôi rằng chức năng mong muốn trong trường hợp này sẽ là giữ cho điều kiện đúng là đúng, điều kiện sai là sai và có các điều kiện chưa biết đánh giá là đúng. Tôi đã thực sự tạo ra một trường hợp sử dụng thấp ở đây? Có thực sự nhiều khả năng muốn biến những điều chưa biết thành đúng, đúng thành sai và sai thành đúng?
create table emp (StartCommission Number(3,2), CurrentCommission Number(3,2));
insert into emp values (null,null);
insert into emp values (null,.1);
insert into emp values (.2,null);
insert into emp values (.3,.4);