缺省值问题

SELECT * FROM STUDENT
1101        王燕          0   20  北京          工程系         NULL
1202        李波          1   21  上海          计算机系        NULL
1203        陈建          1   19  长沙          计算机系        NULL
1303        张斌          1   22  上海          经管系         NULL
1304        刘宏          1   20  NULL    计算机系        NULL

SELECT COUNT(*) FROM STUDENT
5
SELECT * FROM STUDENT WHERE LOCATION = '上海'
1202        李波          1   21  上海          计算机系        NULL
1303        张斌          1   22  上海          经管系         NULL

SELECT COUNT(*) FROM STUDENT WHERE LOCATION = '上海'
2
SELECT COUNT(*) FROM STUDENT WHERE LOCATION != '上海'
1101        王燕          0   20  北京          工程系         NULL
1203        陈建          1   19  长沙          计算机系        NULL

SELECT COUNT(*) FROM STUDENT WHERE LOCATION != '上海'
2
SELECT * FROM STUDENT WHERE LOCATION != '上海' OR LOCATION = '上海'
1101        王燕          0   20  北京          工程系         NULL
1202        李波          1   21  上海          计算机系        NULL
1203        陈建          1   19  长沙          计算机系        NULL
1303        张斌          1   22  上海          经管系         NULL

SELECT COUNT(*) FROM STUDENT WHERE LOCATION != '上海' OR LOCATION = '上海'
4
SELECT * FROM STUDENT EXCEPT (SELECT * FROM STUDENT WHERE LOCATION = '上海' OR LOCATION != '上海')
1304        刘宏          1   20  NULL    计算机系        NULL

可以看出,对NULL的计算并不遵循TRUE OR FALSE原则,因为对NULL进行的比较操作返回的结果为UNKNOWN。所以所有元素的并集条件应该为[ELEMENT] = [SOMETHING] OR [ELEMENT] != [SOMETHING] OR [ELEMENT] IS NULL

你可能感兴趣的:(缺省值问题)