【NULLS】Oracle對SQL排序後NULL值位置的“特殊關照”
Oralce對NULL值的排序後的位置有一個特殊的“關照”,這就是“NULLS FIRST”和“NULLS LAST”選項,使用這個選項便可以在SQL排序中強制指定NULL值出現的位置(是顯示在最前,還是顯示在最後)。
演示並總結在此,供參考。
1.建立演示表T並初始化7條資料
sec@ora10g> create table t (x int);
sec@ora10g> insert into t values (1);
sec@ora10g> insert into t values (2);
sec@ora10g> insert into t values (3);
sec@ora10g> insert into t values (4);
sec@ora10g> insert into t values (null);
sec@ora10g> insert into t values (null);
sec@ora10g> insert into t values (null);
sec@ora10g> commit;
2.不加“關照”的order by升序排序效果--NULL值在後。
sec@ora10g> select * from t order by x;
X
----------
1
2
3
4
7 rows selected.
3.不加“關照”的order by降序排序效果--NULL值在前。
sec@ora10g> select * from t order by x desc;
X
----------
4
3
2
1
7 rows selected.
4.特殊“關照”的order by升序排序效果--NULL值在前。
sec@ora10g> select * from t order by x nulls first;
X
----------
1
2
3
4
7 rows selected.
5.特殊“關照”的order by降序排序效果--NULL值在後。
sec@ora10g> select * from t order by x desc nulls last;
X
----------
4
3
2
1
7 rows selected.
6.規律總結
1)不加“關照”的情況下,我們可以把那些NULL值假想為所有內容中值是最大的,因此,升序排序後NULL值在最後,倒序排序後NULL值在最前!
2)特殊“關照”的情況下,當指定“NULLS FIRST”時,無論是升序排序還是倒序排序,NULL值都會排列在最前面;當指定“NULLS LAST”時,無論是升序排序還是倒序排序,NULL值都會排列在最後面。
7.Oracle官方文件中有關“NULLS FIRST | NULLS LAST”的參考內容
摘錄在此:
NULLS FIRST | NULLS LAST
Specify whether returned rows containing null values should appear first or last in the ordering sequence.
NULLS LAST is the default for ascending order, and NULLS FIRST is the default for descending order.
8.小結
透過這篇內容的介紹,我們可以看到Oracle的確是無微不至。有了這個NULL值位置的強制方法,我們在書寫SQL時的靈活性和可控性便可進一步得到加強。
Good luck.
secooler
10.01.30
-- The End --
演示並總結在此,供參考。
1.建立演示表T並初始化7條資料
sec@ora10g> create table t (x int);
sec@ora10g> insert into t values (1);
sec@ora10g> insert into t values (2);
sec@ora10g> insert into t values (3);
sec@ora10g> insert into t values (4);
sec@ora10g> insert into t values (null);
sec@ora10g> insert into t values (null);
sec@ora10g> insert into t values (null);
sec@ora10g> commit;
2.不加“關照”的order by升序排序效果--NULL值在後。
sec@ora10g> select * from t order by x;
X
----------
1
2
3
4
7 rows selected.
3.不加“關照”的order by降序排序效果--NULL值在前。
sec@ora10g> select * from t order by x desc;
X
----------
4
3
2
1
7 rows selected.
4.特殊“關照”的order by升序排序效果--NULL值在前。
sec@ora10g> select * from t order by x nulls first;
X
----------
1
2
3
4
7 rows selected.
5.特殊“關照”的order by降序排序效果--NULL值在後。
sec@ora10g> select * from t order by x desc nulls last;
X
----------
4
3
2
1
7 rows selected.
6.規律總結
1)不加“關照”的情況下,我們可以把那些NULL值假想為所有內容中值是最大的,因此,升序排序後NULL值在最後,倒序排序後NULL值在最前!
2)特殊“關照”的情況下,當指定“NULLS FIRST”時,無論是升序排序還是倒序排序,NULL值都會排列在最前面;當指定“NULLS LAST”時,無論是升序排序還是倒序排序,NULL值都會排列在最後面。
7.Oracle官方文件中有關“NULLS FIRST | NULLS LAST”的參考內容
摘錄在此:
NULLS FIRST | NULLS LAST
Specify whether returned rows containing null values should appear first or last in the ordering sequence.
NULLS LAST is the default for ascending order, and NULLS FIRST is the default for descending order.
8.小結
透過這篇內容的介紹,我們可以看到Oracle的確是無微不至。有了這個NULL值位置的強制方法,我們在書寫SQL時的靈活性和可控性便可進一步得到加強。
Good luck.
secooler
10.01.30
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-626464/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PostgreSQL排序把null值排在後面SQL排序Null
- HANA SQL參考及Oracle對照SQLOracle
- 【NULL】Oracle null值介紹NullOracle
- SQL 查詢中的 NULL 值SQLNull
- SQL 如何拆分字串中的數值後排序SQL字串排序
- laravel-query-builder 對於欄位 值為 null的排序方式LaravelUINull排序
- 【SQL】17 SQL 檢視(Views)、SQL Date 函式、SQL NULL 值、SQLView函式Null
- 【SQL】Oracle資料庫變更後sql效能對比SQLOracle資料庫
- Oracle sql 語句中帶有特殊的字元處理OracleSQL字元
- NOT IN之後的子查詢不能包含NULL值Null
- 【C#】-對於Null值的處理方法C#Null
- SQL語句中聚合函式忽略NULL值的總結SQL函式Null
- python 對字典的值進行排序Python排序
- 警惕SQL中間的NULLSQLNull
- json_strip_nullsJSONNull
- ORACLE sql merge into update where條件位置與效能消耗OracleSQL
- AutoMapper如何全域性配置map條件過濾null值空值對所有對映起效APPNull
- 面試題((A)null).fun()——java中null值的強轉面試題NullJava
- MySQL null值儲存,null效能影響MySqlNull
- Oracle 去特殊字元Oracle字元
- mssql sqlserver in 關鍵字在值為null的應用舉例SQLServerNull
- 去除陣列中的 null 值陣列Null
- NSURLErrorDomain 對照ErrorAI
- MySQL中case?when對NULL值判斷的踩坑記錄RTGYMySqlNull
- LeetCode 關於陣列的相對排序LeetCode陣列排序
- [20200317]NULL與排序輸出.txtNull排序
- mysql中null與“空值”的坑MySqlNull
- 後臺執行SQL語句(oracle)SQLOracle
- Oracle 特殊字元轉義Oracle字元
- 檢視oracle資料庫中,哪些表的欄位是null值比較多Oracle資料庫Null
- 磁碟排序對Oracle資料庫效能的影響PT排序Oracle資料庫
- [JS高程] 特殊的原始值型別JS型別
- 關於CSS中的定位使用子絕父相(子類絕對位置和父類相對位置)CSS
- 面試題:對NotNull欄位插入Null值 有啥現象?面試題Null
- 大家多多關注關照
- Oracle 12c後enable_ddl_logging的日誌位置變化Oracle
- 18 與Oracle Data Guard 相關的SQL語句OracleSQL
- merge sql error, dbType sqlserver, druid1.1.10, sql : nullSQLErrorServerUINull
- [20231024]NULL值在索引的情況.txtNull索引