Home > Database > Mysql Tutorial > body text

Oracle中的中文排序方式

WBOY
Release: 2016-06-07 17:45:44
Original
909 people have browsed it

测试中文排序的版本:

  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  pro$;

  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 笔画输入法

  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 笔画输入法

  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 笔画输入法

  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 笔画输入法

  13 八2

  14 九1

  12 八1

  5 二

  1 中文

  17 下午啦

  2 中文拼音

  16 测试啊

  20 八千米死亡线

  17 rows selected.

  

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template