查詢中空值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
- python 中空NULL的表示PythonNull
- 如何在es中查詢null值Null
- NOT IN之後的子查詢不能包含NULL值Null
- 你還不知道mysql中空值和null值的區別嗎?MySqlNull
- NOT IN子查詢中出現NULL值對結果的影響你注意到了嗎Null
- NULL列時,如何使得IS NULL或者IS NOT NULL可以使用索引來提高查詢效率Null索引
- 查詢演算法__插值查詢演算法
- 【java】【插值查詢】Java
- 【NULL】Oracle null值介紹NullOracle
- 查詢前90%的資料值
- 插值查詢的簡單理解
- win10系統如何查詢MTU值_win10系統查詢MTU值的方法Win10
- 插值查詢演算法演算法
- java查詢資料庫,int型欄位為null的情況Java資料庫Null
- 面試題((A)null).fun()——java中null值的強轉面試題NullJava
- MySQL null值儲存,null效能影響MySqlNull
- 去除陣列中的 null 值陣列Null
- 查詢固定條數的某個值之和
- 查理芒格的心理開關
- Laravel ORM 中,根據關聯查詢的欄位值,對主查詢排名LaravelORM
- 技術乾貨| MongoDB如何查詢Null或不存在的欄位?MongoDBNull
- 陣列中查詢給定值陣列
- 查詢oracle欄位預設值Oracle
- mybatis配置:map查詢空值返回MyBatis
- mysql中null與“空值”的坑MySqlNull
- Python 查詢字典中最大最小值的keyPython
- SQL查詢的:子查詢和多表查詢SQL
- C#演算法設計查詢篇之03-插值查詢C#演算法
- mybatis註解Select查詢List,返回有物件個數,但是為nullMyBatis物件Null
- [20201224]order by欄位順序與查詢條件為NULL.txtNull
- [20231024]NULL值在索引的情況.txtNull索引
- MySQL 的 NULL 值是怎麼儲存的?MySqlNull
- group by,having查詢 ”每**“的查詢
- mysql查詢表中最小可用id值MySql
- 用HBase做高效能鍵值查詢?
- [WUSTCTF2020]顏值成績查詢-1TF2
- 替換NULL值幫助文件Null
- MySQL查詢某個欄位含有字母數字的值MySql