Oracle中中文、數字,英文混雜形式的欄位進行排序的方法

來源:互聯網
上載者:User

標籤:

http://blog.csdn.net/p451933505/article/details/9272257

對Oracle中中文、數字、英文混雜形式的欄位進行排序的方法:

例如:

  1. order by NLSSORT(欄位名,‘NLS_SORT = SCHINESE_PINYIN_M‘), to_number(translate(欄位名, ‘0123456789‘ || 欄位名, ‘0123456789‘))   

NLSSORT() 函數:

可以使用NLSSORT()函數可以改變Oralce 對漢字的定序,定序如下(前三條對簡體中文進行排序,後兩條對繁體中文進行排序):

1. SCHINESE_RADICAL_M

    簡體中文按照第一順序是“部首”、第二順序是“筆畫數”進行排序。

2. SCHINESE_STROKE_M

    簡體中文按照第一順序“筆畫數”、是第二順序是“部首”進行排序。

3. SCHINESE_PINYIN_M

    簡體中文按照拼音進行排序。上例中即對簡體漢字按照拼音進行排序。

4. TCHINESE_RADICAL_M

    繁體中文按照第一順序是“部首”、第二順序是“筆畫數”進行排序。

5. TCHINESE_STROKE_M

    繁體中文按照第一順序是“筆畫數”、第二順序是“部首”進行排序。 

TRANSLATE() 函數:

用法:將char中出現在from中的每個字元替換為to中的相應字元,若from比to字串長,那麼在from中比to中多出的字元將會被刪除。三個參數中有一個是空,傳回值也將是空值。

 

  1. select TRANSLATE(‘例1213‘,‘0123456789‘||‘例1213‘,‘0123456789‘) as RESULT from dual;  
  2.   RESULT  
  3. ------------   
  4.   1213  

分析:該語句要將 char--‘例1213‘ 中出現在 from--‘0123456789例1213‘ 中的字元替換為 to--‘0123456789‘ 中的字元,根據 from、to 的對應關係,將 char 中的 0替換成0、1替換成1、...9替換成9,即 char 中的數字不變,又 from 比 to 長,則 from 中比 to 中多出的字元將被刪除,即刪除 char 中的漢字。

Oracle中中文、數字,英文混雜形式的欄位進行排序的方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.