1. 程式人生 > >ORACLE-SQL:排序防止NULL影響排序結果的處理方法

ORACLE-SQL:排序防止NULL影響排序結果的處理方法

1.不加“關照”的order by升序排序效果--NULL值在後。
[email protected]> select * from t order by x;
         X
----------
         1
         2
         3
         4
7 rows selected.
2.不加“關照”的order by降序排序效果--NULL值在前。
[email protected]> select * from t order by x desc;
         X
----------
         4
         3
         2

         1
7 rows selected.
3.特殊“關照”的order by升序排序效果--NULL值在前。
[email protected]> select * from t order by x nulls first;
         X
----------
         1
         2
         3
         4
7 rows selected.
4.特殊“關照”的order by降序排序效果--NULL值在後。
[email protected]> select * from t order by x desc nulls last;

         X
----------
         4
         3
         2
         1
7 rows selected.
5.規律總結
1)不加“關照”的情況下,我們可以把那些NULL值假想為所有內容中值是最大的,因此,升序排序後NULL值在最後,倒序排序後NULL值在最前!
2)特殊“關照”的情況下,當指定“NULLS FIRST”時,無論是升序排序還是倒序排序,NULL值都會排列在最前面;當指定“NULLS LAST”時,無論是升序排序還是倒序排序,NULL值都會排列在最後面。
6.Oracle官方文件中有關“NULLS FIRST | NULLS LAST”的參考內容

http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_10002.htm#i2171079
摘錄在此:
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.

轉載自:http://yuanlonglongzyq.blog.163.com/blog/static/181509642201252092633793/

相關推薦

ORACLE-SQL:排序防止NULL影響排序結果處理方法

1.不加“關照”的order by升序排序效果--NULL值在後。[email protected]> select * from t order by x;         X----------         1         2         3

sql 2008資料事務日誌已滿處理方法

  --截斷事務日誌      backup   log   mybase_db   with   no_log       go   --收縮資料庫        dbcc   shrinkdatabase(mybase_db)        go  但是還是沒有

Oracle ORA-39726壓縮表刪除欄位處理方法

今天在往一個壓縮表增加一個欄位可以增加成功,但在刪除的時候報了個 ORA-39726 unsupported add/drop column operation on compressed tables的錯誤。 錯誤是不能對壓縮表增加或刪除欄位,奇怪的可以增加,但是不能刪

[Oracle SQL] 使用rollup分組統計按統計結果分組排序顯示的問題

今天想對某些班、課程的掛科人數做統計和小計,使用rollup可以很容易實現這個功能。 比如涉及的成績(all_scores)表結構為 BH 班號 BJMC 班級名稱 KCMC 課程名稱 JD 績點 其中JD為0表示掛科了。我們很容易寫一個分組統計來統計各個班各個課程的掛科

MyBatis 排序防止sql注入

MyBatis的排序 引言     最近在專案開發中遇到一個問題,專案中使用的的MyBatis的排序功能被安全部門掃描出了SQL注入安全隱患,檢視安全報告說是有一個介面中存在SQL注入的安全漏洞,檢查後發現是因為該介面中的排序功能使用了的MyBatis中的$ {}。

SQL中ORDER BY待排序欄位值相同時,查詢結果是什麼?

簡書 Wwwwei轉載請註明原創出處,謝謝!前言  資料庫分頁是後臺經常要使用的技術手段,有時候進行資料庫查詢會根據業務需要對某一欄位排序,那麼當待排序欄位值相同時,我們得到的查詢結果會是什麼呢?問題描述  資料分頁時需要根據資料記錄建立時間create_time欄位倒序,即使用order

資料庫之SQL ORDER BY 語句用於對結果集進行排序

ORDER BY 語句用於對結果集進行排序。 ORDER BY 語句 ORDER BY 語句用於根據指定的列對結果集進行排序。 ORDER BY 語句預設按照升序對記錄進行排序。 如果您希望按照降序對記錄進行排序,可以使用 DESC 關鍵字。 原始的

SQL中ORDER BY待排序欄位值相同時,查詢結果排序

原文地址:https://blog.csdn.net/wwwwei_csdn/article/details/78181197前言  資料庫分頁是後臺經常要使用的技術手段,有時候進行資料庫查詢會根據業務需要對某一欄位排序,那麼當待排序欄位值相同時,我們得到的查詢結果會是什麼呢?問題描述  資料分

關於空值null排序問題 mysql 和oracle

Oracle資料庫 order by colum asc 時,null預設被放在最後 order by colum desc 時,null預設被放在最前 nulls first 時,強制null放在最前,不為null的按宣告順序[asc|desc]進行排序 nulls l

Oracle資料庫order by排序null處理方法

最近在忙活公司產品後臺的資料報表,在對業務資料排序時候,發現有些欄位的記錄是null值,這時排序便出現了有違我們使用習慣的資料大小順序問題。在Oracle中規定,在Order by排序時預設認為null是最大值,所以如果是ASC升序則被排在最後,而DESC降序則排在最前。

如何讓SQL語句不執行預設排序,而是按照in語句的順序返回結果

Oracle: select name from order where order_id in('111','222','333','444','555','666')order by instr

OracleSQL多重排序--多欄位排序

我們在查詢出資料的時候,需要根據某幾個欄位進行排序。 比如:查詢車輛的時候,根據車輛的型別或者註冊時間查詢車輛資訊,然後根據車輛的號碼排序,再根據車輛型別進行排序,再或者根據車輛的註冊時間進行排序。具體的查詢語句應該是: Sql程式碼  select hphm,

SQL Server、Oracle和MySQL判斷NULL方法

ron gin round exp style ref int 宋體 oat SQL Server、Oracle和MySQL判斷NULL的方法本文講述SQL Server、Oracle、MySQL查出值為NULL的替換。 在SQL Server Oracle MySQL當數

轉轉轉--oracle 去重並按時間排序取第一條

acl 需要 log 順序 一點 pre art 再計算 分組 select t.* from (select a.*, row_number() over(partition by 需要分組的字段 order by 更新時間 desc) rw

SQL系列(五)—— 排序(order by)

消息 使用 選擇列 table asc 錯誤 實現 重用 應該 對查詢結果進行排序是日常應用開發中最為常見的需求,在SQL中通過order by實現。order by是select語句中一部分,即子句。 1.order by 1.1 單列排序 其實,檢索出的數據並不是隨機顯

SQL Server 與MySQL中排序規則與字符集相關知識的一點總結

bubuko col https 中文字符集 目前 創建 har 運算 進制 原文:SQL Server 與MySQL中排序規則與字符集相關知識的一點總結 字符集&&排序規則 字符集是針對不同語言的字符編碼的集合,比如UTF-8字符集,GBK字符集,G

第三章 集合與排序 3-3 為聚合結果指定條件

執行順序 排序 png 常數 第三章 info mage 分享圖片 需要 一、HAVING 子句 HAVING 和 WHERE並用時 SELECT 的執行順序: FROM ---WHERE ---GROUP BY----HAVING---- SELECT 二、HAV

Oracle基礎學習之空值排序

初始 font 結果 eat 工資 dep varchar2 com creat 新建表: 1 -- Create table 2 create table EMP 3 ( 4 empno NUMBER(4), 5 ename VARCHAR

SQL SERVER 字串按數字排序

需求是這樣的: 資料庫表裡面有一個欄位型別是nvachar,存的值是數字和字元混合的,要實現先按數字排序,再按字母倒序。 思路: 考慮這個欄位的值是否是有規律可循的,把要按數字排序的部分轉換為數字,再把剩下的字元排序。 資料表是下面這樣的: LevelName就是那

SQL: Case-When實現複雜排序

2018.11.18 文章目錄 前言 方法 前言 某個模組讀取SQL server時,需要按一定的優先順序讀取,比如滿足T.a = 'A’的先讀,T.b='B’的次之,T.c='C’的優先順序最低。最