知识大全 Oracle中的中文排序方式
Posted 中文
篇首语:知识为进步之母,而进步又为富强之源泉。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Oracle中的中文排序方式相关的知识,希望对你有一定的参考价值。
Oracle中的中文排序方式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
测试中文排序的数据库版本
SQL> select * from v$version;
BANNER
Oracle Database g Enterprise Edition Release Production
PL/SQL Release Production
CORE Production
TNS for Linux: Version Production
NLSRTL Version Production
创建测试表
create table player (id number( ) name varchar ( ));
检查字符集配置
确认数据库字符集 american_america AL UTF
SQL> select name value$ from props$;
NAME VALUE$
DICT BASE
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 AL UTF
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_P BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL UTF
NLS_RDBMS_VERSION
GLOBAL_DB_NAME ORA G
EXPORT_VIEWS_VERSION
WORKLOAD_CAPTURE_MODE
WORKLOAD_REPLAY_MODE
DBTIMEZONE :
rows selected
SQL>
深入确认字符集
SELECT DISTINCT (NLS_CHARSET_NAME(CHARSETID)) CHARACTERSET
DECODE(TYPE#
DECODE(CHARSETFORM VARCHAR NVARCHAR UNKOWN )
DECODE(CHARSETFORM VARCHAR NCHAR VARYING UNKOWN )
DECODE(CHARSETFORM CHAR NCHAR UNKOWN )
DECODE(CHARSETFORM CLOB NCLOB UNKOWN )) TYPES_USED_IN
FROM SYS COL$
WHERE CHARSETFORM IN ( )
AND TYPE# IN ( );
确认操作系统字符集设置
[ora g@bj ~]$ export NLS_LANG=american_america al utf
填写测试数据
SQL> insert into player values ( 下午啦 );
row created
SQL> insert into player values ( 八千米死亡线 );
SQL> set pagesize
SQL> select * from player;
ID NAME
中文
中文拼音
笔画输入法
一
二
三
四
五
六
七
八
八
九
十
测试啊
下午啦
八千米死亡线
rows selected
SQL>
开始测试 发现三个查询语句返回的结果一致
SQL> select * from player order by nlssort(name NLS_SORT=SCHINESE_RADICAL_M );
ID NAME
一
十
四
七
六
五
三
笔画输入法
八
九
八
二
中文
下午啦
中文拼音
测试啊
八千米死亡线
rows selected
SQL> select * from player order by nlssort(name NLS_SORT=SCHINESE_STROKE_M );
ID NAME
一
十
四
七
六
五
三
笔画输入法
八
九
八
二
中文
下午啦
中文拼音
测试啊
八千米死亡线
rows selected
SQL> select * from player order by nlssort(name NLS_SORT=SCHINESE_PINYIN_M );
ID NAME
一
十
四
七
六
五
三
笔画输入法
八
九
八
二
中文
下午啦
中文拼音
测试啊
八千米死亡线
rows selected
囧 疑似碰上bug 切换到 gR 下看看
SQL> select * from v$version;
BANNER
Oracle Database g Enterprise Edition Release Prod
PL/SQL Release Production
CORE Production
TNS for Linux: Version Production
NLSRTL Version Production
SQL> select * from player order by nlssort(name NLS_SORT=SCHINESE_PINYIN_M );
ID NAME
八
八
八千米死亡线
笔画输入法
测试啊
二
九
六
七
三
十
四
五
下午啦
一
中文
中文拼音
rows selected
SQL> select * from player order by nlssort(name NLS_SORT=SCHINESE_STROKE_M );
ID NAME
一
七
二
九
八
八
八千米死亡线
十
三
下午啦
五
中文
中文拼音
六
四
测试啊
笔画输入法
测试服务器
rows selected
SQL> select * from player order by nlssort(name NLS_SORT=SCHINESE_RADICAL_M );
ID NAME
一
七
二
三
下午啦
五
中文
中文拼音
九
八
八
八千米死亡线
六
十
四
测试啊
笔画输入法
测试服务器
rows selected
SQL>
这个结果似乎比较符合预期结果
NLS_SORT=SCHINESE_RADICAL_M 按照部首排序
NLS_SORT=SCHINESE_STROKE_M 按照笔画排序
cha138/Article/program/Oracle/201311/17664相关参考
在Oracle查询中如果在没有排序但又想让某列中特定值的信息排到前面的时候使用oracle的decode(字段字段值数字)cha138/Article/program/Oracle/20
Oracle聚集函数排序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 对于按照自定义聚集函数连
Oracle基本查询过滤排序示例解析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!以下是对Orac
Oracle分页查询中排序与效率问题 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 原始未分页查
解决Oracle分页查询中排序与效率问题 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 原始未分
用排序哈希簇来提升ORACLE查询速度 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 当数据存储
别名 oracle别名如果别名包含空格特殊字符(如#$)或需区分大小写(Name)需要用双引号把别名引起来 selectenameName sal*AnnualSalary fromemp
标准的rownum分页查询使用方法 select* from(selectc*rownumrnfromcontentc) &n
排序方向 你希望ReversibleSortedList类中的元素是以TKey(键)的顺序进行存储的并且它即可以从小排到大也可以从大排到小当然最佳方式就是在添加元素时找到合适的位置插入插入后元素
Jjava中文汉字排序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! //Collator类是用