在使用order by排序的時候,出現如下情況:
印象中中文排序應該預設是按照拼音排序的,為何「鑫」會排在「中」的後面呢?猜想order by是不是根據對應字元的ascii碼排的呢,因此列出了對應的ascii,如下:
由此基本可以斷定,確實是通過ascii的大小來排序的,這也解釋了為什麼數字會排在字母之前,字母為什麼會排在漢字之前的現象。但是為什麼會出現漢字預設是通過拼音排序的錯覺呢,於是查了一下漢字的編碼規則,有提到如下一句:
「一級漢字,是最常用的漢字,按漢語拼音字母順序排列,共3755個;二級漢字,屬於次常用漢字,按偏旁部首的筆劃順序排列,共3008個」
可知,如果排序的漢字都是一級漢字的話,確實是按照拼音順序排列的,如果涉及到二級漢字,就不一定了。
但是,如果就是要讓漢字通過拼音順序排序呢,可以通過如下方式:
按照拼音順序
order by nlssort(name, 'nls_sort=schinese_pinyin_m')
order by nlssort(name, 'nls_sort=schinese_pinyin_m'),nlssort(address, 'nls_sort=schinese_pinyin_m')實現同時排序
按照部首順序
order by nlssort(name, 'nls_sort=schinese_radical_m')
按照筆畫順序
order by nlssort(name, 'nls_sort=schinese_stroke_m')
Oracle中的order by分頁排序問題
今天在系統測試的過程中,測試人員發現自己新新增的科目新增到系統中在頁面預設分頁查詢中沒有找到自己新加的科目 分頁過程中頁面顯示資料確實和資料表中的資料總量一致 但是通過系統的搜尋功能是可以查詢的到資料?提了乙個bug?解決bug的過程 系統中有乙個科目表subject manage表結構如下 cre...
oracle中order by造成分頁錯誤
問題 今天在工作中,在service中呼叫分頁查詢列表介面的時候,返回的到頁面的資料中總是存在缺失的資料,還有重複的資料。分析 select from select rownum rn,t.from select from student order by class t where rownum ...
十一 Sql server中order by的用法
在上面幾節中我們學習了一些條件語句,但不知對這些選擇的資料如何排序,如果要對資料排序,那該怎麼辦呢?這時就可以用到 order by 指令了。先看下它的語法 select 欄位名 from 名 where 條件 order by 欄位名 asc,desc 假如有乙個教師資訊表 而我們想要按年齡由小大...