热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

oracle中的中文排序,Oracle中的中文排序方式

测试中文排序的版本:SQLselect*fromv$version;BANNER------------------------------------------

测试中文排序的版本:

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.

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:php中文网



推荐阅读
author-avatar
mobiledu2502860837
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有