關於多行子查詢中的空值問題,not null

2021-07-14 01:32:00 字數 498 閱讀 9102

在操作表查詢時,發現乙個問題,進行子查詢時使用not in的查詢結果不存在:

如下的操作:

查詢不是老闆的員工:

select * from emp where 

empno not in(select mager from emp );

這條語句執行的結果為空,但是從資料上來看並不會為空,看來還是語法的錯誤,查詢了後才發現不能如此使用,因為 not in 表示不等會查詢結果的每乙個值,但查詢的結果中可能會包含了 null(空值), 也就是說 empno !=null,這句本身就是不成立的,判斷中關於空值的應該是 empno is not null,所以這個返回的是假,這個查詢是查不到任何值的,所以使用not in 做子查詢時應該在子查詢中使用 is not null過濾掉為空的值,應該寫成如下的語句:

select * from emp where

empno not  in(select marge from emp where marge is not null);

Oracle中,關於空值的問題

在oracle資料庫中,空值是乙個特殊的。比如要查詢出乙個表中,某個欄位為空或者不為空的資料,不能直接用 或者 要使用is null或者is not null。以上可以說是乙個常識性問題,一般都不會犯。不過,下面要說的問題,可能會被大多數人忽略 比如,在許可權系統中,根據角色id,要找出具有這個角色...

Oracle中的空值問題

空值既不是零也不是空格,它是未定義的,無效的值。只要包含空值的數學表示式都為空值。在資料庫表示式中,如果不對空值進行特殊處理,例如使用通用函式對空值進行替換的話,預設空值最大。1.建立表 create table s user id number 10 primary key,name varcha...

oracle中多行子查詢與多行操作符

oracle中多行子查詢與多行操作符 1 多行子查詢 子查詢返回多條資料 2 多行操作符 in 取在集合中的元素 any 和集合中任意一條資料比較 all 和集合中所有資料比較 例 查出工資比部門2任意員工高的人員資訊 select from emp t where t.sal any select...