查詢中空值null的查理
空值在查詢中的處理:
在查詢的時候,空值的存在,會影響查詢資料結果的質量,甚至不準確,
我們要知道:null<>null,null<>0,空值null與其他資料的四則運算的結果都是空值。
以下處理講述一些在查詢中處理空值的函式。
1、在忽略空值的情況下查詢獎金為空員工的工資加獎金作為收入:
SQL> select ename,sal,comm,sal+comm as income
2 from emp
3 where comm is null;
ENAME SAL COMM INCOME
---------- ---------- ---------- ----------
SMITH 800
JONES 2975
BLAKE 2850
CLARK 2450
SCOTT 3000
KING 5000
ADAMS 1100
JAMES 950
FORD 3000
MILLER 1300
10 rows selected.
從查詢結果的資料看,income欄位為空,則表示對應的員工收入為空,這是明顯的錯誤。
2、以下運用到以下空值處理函式:
1》nvl(expr1,expr2):
當expr1 不為空值,返回expr1,當為空值,返回expr2.
SQL> select ename,sal,comm,sal+nvl(comm,0) income
2 from emp
3 where comm is null;
ENAME SAL COMM INCOME
---------- ---------- ---------- ----------
SMITH 800 800
JONES 2975 2975
BLAKE 2850 2850
CLARK 2450 2450
SCOTT 3000 3000
KING 5000 5000
ADAMS 1100 1100
JAMES 950 950
FORD 3000 3000
MILLER 1300 1300
10 rows selected.
2》nvl2(expr1,expr2,expr3):
當expr1 不為空值,返回expr3,當為空值,返回expr2。
SQL> select ename,sal,comm,nvl2(comm,sal+comm,sal) income
2 from emp
3 where comm is null;
ENAME SAL COMM INCOME
---------- ---------- ---------- ----------
SMITH 800 800
JONES 2975 2975
BLAKE 2850 2850
CLARK 2450 2450
SCOTT 3000 3000
KING 5000 5000
ADAMS 1100 1100
JAMES 950 950
FORD 3000 3000
MILLER 1300 1300
10 rows selected.
3》nullif(expr1,expr2):
expr1,expr2當兩值相等,返回空值,兩值不等時,返回expr1。
SQL> select nullif(3,2),nullif(100,100)
2 from dual;
NULLIF(3,2) NULLIF(100,100)
----------- ---------------
3
4》coalesce(expr1,expr2,...exprn):
返回第一個不為空值null的表示式exprn。
檢視部門號為30的員工相關資訊,顯示獎金,當獎金為空值時,並標明為1。
SQL> select ename,sal,comm,coalesce(comm,1),
2 nvl(sal+comm,sal) income,deptno
3 from emp
4 where deptno = 30;
ENAME SAL COMM COALESCE(COMM,1) INCOME DEPTNO
---------- ---------- ---------- ---------------- ---------- ----------
ALLEN 1600 300 300 1900 30
WARD 1250 500 500 1750 30
MARTIN 1250 1400 1400 2650 30
BLAKE 2850 1 2850 30
TURNER 1500 0 0 1500 30
JAMES 950 1 950 30
6 rows selected.
上面的4個函式中,都要求函式式裡面的表示式的資料型別要相同。
SQL> select coalesce('','next','su','xing') from dual;
COAL
----
next
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31392094/viewspace-2126001/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL 查詢中的 NULL 值SQLNull
- 如何在es中查詢null值Null
- NOT IN之後的子查詢不能包含NULL值Null
- 你還不知道mysql中空值和null值的區別嗎?MySqlNull
- python 中空NULL的表示PythonNull
- Java中空串和null串的區別JavaNull
- mysql 查詢欄位為null或者非nullMySqlNull
- where語句中多條件查詢欄位NULL與NOT NULL不確定性查詢Null
- NOT IN子查詢中出現NULL值對結果的影響你注意到了嗎Null
- 01:查詢特定的值
- 等於NULL的查詢條件導致查詢結果不正確Null
- 查詢演算法__插值查詢演算法
- NULL列時,如何使得IS NULL或者IS NOT NULL可以使用索引來提高查詢效率Null索引
- 【java】【插值查詢】Java
- 【NULL】Oracle null值介紹NullOracle
- 插值查詢的簡單理解
- 查詢前90%的資料值
- 查詢繫結變數的值變數
- hive中的null值HiveNull
- win10系統如何查詢MTU值_win10系統查詢MTU值的方法Win10
- 查詢某個欄位的不同值
- SQL中的空值NULLSQLNull
- SQL server中的NULL值SQLServerNull
- 插值查詢演算法演算法
- pga/sga及元件值查詢元件
- 資料庫查詢配置值資料庫
- 面試題((A)null).fun()——java中null值的強轉面試題NullJava
- NULL 值與索引Null索引
- oracle學習(3) -變數為null時的查詢處理Oracle變數Null
- 不再迷惑,無值和 NULL 值Null
- 查詢固定條數的某個值之和
- java陣列回顧---線性查詢最大值最小值---二分查詢Java陣列
- MySQL null值儲存,null效能影響MySqlNull
- 去除陣列中的 null 值陣列Null
- mybatis配置:map查詢空值返回MyBatis
- 陣列中查詢給定值陣列
- 使用 VLOOKUP、INDEX 或 MATCH 查詢值Index
- Laravel ORM 中,根據關聯查詢的欄位值,對主查詢排名LaravelORM