Oracle排序排除null,oracle 排序(中文,null的处理)
oracle在9i之前是對漢字的排序是按照二進制編碼進行排序的,很不適合我們的國情,在oracle9i之后,漢字的排序方式有了以下三種方式:
1、使用拼音排序???????NLS_SORT=SCHINESE_PINYIN_M
2、使用筆畫排序???????NLS_SORT=SCHINESE_STROKE_M 第一順序筆畫,第二順序部首;
3、使用偏旁部首排序???NLS_SORT=SCHINESE_RADICAL_M 第一順序部首,第二順序筆畫;
這樣,就可以在查詢的時候,指定漢字的排序方式,設定方式可以分為以下三個級別:
1、語句級別設置排序方式:
按照筆劃排序:
select * from table order by nlssort(col,'NLS_SORT=SCHINESE_STROKE_M');
按照部首排序:
select * from table order by nlssort(col,'NLS_SORT=SCHINESE_RADICAL_M');
按照拼音排序:
select * from table order by nlssort(col,'NLS_SORT=SCHINESE_PINYIN_M');
2、Session級別的設置,修改ORACLE字段的默認排序方式:
按拼音:alter session set nls_sort = SCHINESE_PINYIN_M;
按筆畫:alter session set nls_sort = SCHINESE_STROKE_M;
按偏旁:alter session set nls_sort = NLS_SORT=SCHINESE_RADICAL_M;
3、修改系統(tǒng)參數(shù)(數(shù)據(jù)庫所在操作系統(tǒng)):
set NLS_SORT=SCHINESE_RADICAL_M ;export NLS_SORT (sh)setenv NLS_SORT SCHINESE_RADICAL_M (csh)? HKLCSOFTWAREORACLEhome0NLS_SORT(win注冊表);
網(wǎng)上有人說,oracle9i之后對于漢字的默認排序是拼音排序(SCHINESE_PINYIN_M),但是經過我的實際驗證,發(fā)現(xiàn)不是,排序比較亂,也不知道是不是按照二進制編碼進行排序的。
使用如下方法可以查看oracle的一些默認參數(shù)(注意標紅的參數(shù)值):
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
Connected as system
SQL>
SQL> select * from nls_database_parameters;
PARAMETER????????????????????? VALUE
------------------------------ ----------------------------------------------------
NLS_LANGUAGE?????????????????? AMERICAN
NLS_NCHAR_CHARACTERSET???????? UTF8
NLS_TERRITORY????????????????? AMERICA
NLS_CURRENCY?????????????????? $
NLS_ISO_CURRENCY?????????????? AMERICA
NLS_SORT?????????????????????? BINARY
NLS_NUMERIC_CHARACTERS???????? .,
NLS_CHARACTERSET?????????????? AL32UTF8
NLS_CALENDAR?????????????????? GREGORIAN
NLS_DATE_FORMAT??????????????? DD-MON-RR
NLS_DATE_LANGUAGE????????????? AMERICAN
NLS_TIME_FORMAT??????????????? HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT?????????? DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT???????????? HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT??????? DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY????????????? $
NLS_COMP?????????????????????? BINARY
NLS_LENGTH_SEMANTICS?????????? BYTE
NLS_NCHAR_CONV_EXCP??????????? FALSE
NLS_RDBMS_VERSION????????????? 10.2.0.1.0
總結
以上是生活随笔為你收集整理的Oracle排序排除null,oracle 排序(中文,null的处理)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 豆腐多少钱一斤啊?
- 下一篇: php支付宝同步和异步有什么区别,支付宝