Oracle中的中文排序方式

來源:互聯網
上載者:User

測試中文排序的資料庫版本:

  SQL> select * from v$version;

  BANNER

  --------------------------------------------------------------------------------

  Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production

  PL/SQL Release 11.1.0.6.0 - Production

  CORE    11.1.0.6.0      Production

  TNS for Linux: Version 11.1.0.6.0 - Production

  NLSRTL Version 11.1.0.6.0 - Production

  2. 建立測試表

  create table player (id number(16, 0), name varchar2(30));

  3. 檢查字元集配置

  確認資料庫字元集 american_america.AL32UTF8

  SQL>  select  name,value$  from  props$;

  NAME                           VALUE$

  ------------------------------ ------------------------------

  DICT.BASE                      2

  DEFAULT_TEMP_TABLESPACE        TEMP

  DEFAULT_PERMANENT_TABLESPACE   USERS

  DEFAULT_EDITION                ORA$BASE

  Flashback Timestamp TimeZone   GMT

  TDE_MASTER_KEY_ID

  DEFAULT_TBS_TYPE               SMALLFILE

  NLS_LANGUAGE                   AMERICAN

  NLS_TERRITORY                  AMERICA

  NLS_CURRENCY                   $

  NLS_ISO_CURRENCY               AMERICA

  NLS_NUMERIC_CHARACTERS         .,

  NLS_CHARACTERSET               AL32UTF8

  NLS_CALENDAR                   GREGORIAN

  NLS_DATE_FORMAT                DD-MON-RR

  NLS_DATE_LANGUAGE              AMERICAN

  NLS_SORT                       BINARY

  NLS_TIME_FORMAT                HH.MI.SSXFF AM

  NLS_TIMESTAMP_FORMAT           DDMON-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_NCHAR_CHARACTERSET         AL16UTF16

  NLS_RDBMS_VERSION              11.1.0.6.0

  GLOBAL_DB_NAME                 ORA11G

  EXPORT_VIEWS_VERSION           8

  WORKLOAD_CAPTURE_MODE

  WORKLOAD_REPLAY_MODE

  DBTIMEZONE                     00:00

  32 rows selected.

  SQL>

  深入確認字元集

  SELECT DISTINCT (NLS_CHARSET_NAME(CHARSETID)) CHARACTERSET,

  DECODE(TYPE#, 1,

  DECODE(CHARSETFORM, 1, 'VARCHAR2', 2, 'NVARCHAR2', 'UNKOWN'),

  9,

  DECODE(CHARSETFORM, 1, 'VARCHAR', 2, 'NCHAR VARYING', 'UNKOWN'),

  96,

  DECODE(CHARSETFORM, 1, 'CHAR', 2, 'NCHAR', 'UNKOWN'),

  112,

  DECODE(CHARSETFORM, 1, 'CLOB', 2, 'NCLOB', 'UNKOWN')) TYPES_USED_IN

  FROM SYS.COL$

  WHERE CHARSETFORM IN (1, 2)

  AND TYPE# IN (1, 9, 96, 112);

  確認作業系統字元集設定

  [ora11g@bj55 ~]$ export NLS_LANG=american_america.al32utf8

  4. 填寫測試資料

  。。。。

  SQL> insert into player values (17, '下午啦');

  1 row created.

  SQL> insert into player values (20, '八千米死亡線');

  SQL> set pagesize 60

  SQL>  select * from player;

  ID NAME
  
  
   1 中文

  2 中文拼音

  3 筆畫IME

  4 一

  5 二

  6 三

  7 四

  8 五

  9 六

  10 七

  12 八1

  13 八2

  14 九1

  15 十

  16 測試啊

  17 下午啦

  20 八千米死亡線

  17 rows selected.

  SQL>

  5.  開始測試,發現三個查詢語句返回的結果一致

  SQL> select * from player order by    nlssort(name,'NLS_SORT=SCHINESE_RADICAL_M');

  ID NAME

  ---------- --------------------

  4 一

  15 十

  7 四

  10 七

  9 六

  8 五

  6 三

  3 筆畫IME

  13 八2

  14 九1

  12 八1

  5 二

  1 中文

  17 下午啦

  2 中文拼音

  16 測試啊

  20 八千米死亡線

  17 rows selected.

 

  SQL> select * from player order by nlssort(name,'NLS_SORT=SCHINESE_STROKE_M');

  ID NAME

  ---------- --------------------

  4 一

  15 十

  7 四

  10 七

  9 六

  8 五

  6 三

  3 筆畫IME

  13 八2

  14 九1

  12 八1

  5 二

  1 中文

  17 下午啦

  2 中文拼音

  16 測試啊

  20 八千米死亡線

  17 rows selected.

  SQL> select * from player order by nlssort(name,'NLS_SORT=SCHINESE_PINYIN_M');

  ID NAME

  ---------- --------------------------------

  4 一

  15 十

  7 四

  10 七

  9 六

  8 五

  6 三

  3 筆畫IME

  13 八2

  14 九1

  12 八1

  5 二

  1 中文

  17 下午啦

  2 中文拼音

  16 測試啊

  20 八千米死亡線

  17 rows selected.

  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.