標籤:
http://blog.csdn.net/p451933505/article/details/9272257
對Oracle中中文、數字、英文混雜形式的欄位進行排序的方法:
例如:
- 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中多出的字元將會被刪除。三個參數中有一個是空,傳回值也將是空值。
- select TRANSLATE(‘例1213‘,‘0123456789‘||‘例1213‘,‘0123456789‘) as RESULT from dual;
- RESULT
- ------------
- 1213
分析:該語句要將 char--‘例1213‘ 中出現在 from--‘0123456789例1213‘ 中的字元替換為 to--‘0123456789‘ 中的字元,根據 from、to 的對應關係,將 char 中的 0替換成0、1替換成1、...9替換成9,即 char 中的數字不變,又 from 比 to 長,則 from 中比 to 中多出的字元將被刪除,即刪除 char 中的漢字。
Oracle中中文、數字,英文混雜形式的欄位進行排序的方法