時(shí)間:2015-06-28 00:00:00 來(lái)源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(0)
1. 測(cè)試中文排序的數(shù)據(jù)庫(kù)版本:
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. 創(chuàng)建測(cè)試表
create table player (id number(16, 0), name varchar2(30));
3. 檢查字符集配置
確認(rèn)數(shù)據(jù)庫(kù)字符集 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???? 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_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>
深入確認(rèn)字符集
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);
確認(rèn)操作系統(tǒng)字符集設(shè)置
[ora11g@bj55 ~]$ export NLS_LANG=american_america.al32utf8
4. 填寫(xiě)測(cè)試數(shù)據(jù)
。。。。
SQL> insert into player values (17, '下午啦');
1 row created.
SQL> insert into player values (20, '八千米死亡線(xiàn)');
SQL> set pagesize 60
SQL>? select * from player;
ID NAME
#p#副標(biāo)題#e#
1 中文
2 中文拼音
4 一
5 二
6 三
7 四
8 五
9 六
10 七
12 八1
13 八2
14 九1
15 十
16 測(cè)試啊
17 下午啦
20 八千米死亡線(xiàn)
17 rows selected.
SQL>
5.? 開(kāi)始測(cè)試,發(fā)現(xiàn)三個(gè)查詢(xún)語(yǔ)句返回的結(jié)果一致
SQL> select * from player order by??? nlssort(name,'NLS_SORT=SCHINESE_RADICAL_M');
ID NAME
---------- --------------------
4 一
15 十
7 四
10 七
9 六
8 五
6 三
3 筆畫(huà)輸入法
13 八2
14 九1
12 八1
5 二
1 中文
17 下午啦
2 中文拼音
16 測(cè)試啊
20 八千米死亡線(xiàn)
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 筆畫(huà)輸入法
13 八2
14 九1
12 八1
5 二
1 中文
17 下午啦
2 中文拼音
16 測(cè)試啊
20 八千米死亡線(xiàn)
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 筆畫(huà)輸入法
13 八2
14 九1
12 八1
5 二
1 中文
17 下午啦
2 中文拼音
16 測(cè)試啊
20 八千米死亡線(xiàn)
17 rows selected.
囧,疑似碰上bug,切換到10gR2下看看
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
關(guān)鍵詞標(biāo)簽:Oracle
相關(guān)閱讀
熱門(mén)文章 Oracle中使用alter table來(lái)增加,刪除,修改列的語(yǔ)法 oracle中使用SQL語(yǔ)句修改字段類(lèi)型-oracle修改SQL語(yǔ)句案例 誤刪Oracle數(shù)據(jù)庫(kù)實(shí)例的控制文件 為UNIX服務(wù)器設(shè)置Oracle全文檢索
人氣排行 oracle中使用SQL語(yǔ)句修改字段類(lèi)型-oracle修改SQL語(yǔ)句案例 Oracle中使用alter table來(lái)增加,刪除,修改列的語(yǔ)法 ORACLE SQL 判斷字符串是否為數(shù)字的語(yǔ)句 ORACLE和SQL語(yǔ)法區(qū)別歸納(1) oracle grant 授權(quán)語(yǔ)句 ORACLE修改IP地址后如何能夠使用 如何加速Oracle大批量數(shù)據(jù)處理 Oracle刪除表的幾種方法