oracle 按照中文排序
2013-02-28 09:59
381 查看
在oracle 9i之前,对中文的排序,是默认按2进制编码来进行排序的. 9i时增加了几种新的选择:
按中文拼音进行排序:SCHINESE_PINYIN_M
按中文部首进行排序:SCHINESE_RADICAL_M
按中文笔画进行排序:SCHINESE_STROKE_M
而oracle 9i是对中文的排序是默认按拼音排序(并不是指NLS_SORT = SCHINESE_PINYIN_M,而是说SQL中不指定NLS_SORT时对中文列排序时默认按拼音)的,跟之前的2进制编码排序有所不同.具体用法如下:
直接写在sql中,例如:
SELECT * FROM TEAM ORDER BY NLSSORT(排序字段名,'NLS_SORT = SCHINESE_PINYIN_M');
SELECT * FROM TEAM ORDER BY NLSSORT(排序字段名,'NLS_SORT = SCHINESE_STROKE_M');
SELECT * FROM TEAM ORDER BY NLSSORT(排序字段名,'NLS_SORT = SCHINESE_RADICAL_M');
配置在初始化参数NLS_SORT中,这可以在数据库创建时指定,也可以通过alter session来修改.如果是前者,则在所有session中生效.例如:
使用select * from NLS_SESSION_PARAMETERS;语句可以看到NLS_SORT的值.
更改配置文件:alter system set nls_sort='SCHINESE_PINYIN_M' scope=spfile;
更改session:alter SESSION set NLS_SORT = SCHINESE_PINYIN_M;
这里要额外注意一下性能问题,按oracle官方文档的解释,oracle在对中文列建立索引时,是按照2进制编码进行排序的,所以如果NLS_SORT被设置为BINARY时,排序则可以利用索引.如果不是2进制排序,而是使用上面介绍的3种针对中文的特殊排序,则oracle无法使用索引,会进行全表扫描.这点一定要注意,多用plsql工具比较一下执行效率.解决方法是,在此列上建立linguistic index.例如:CREATE INDEX nls_index ON my_table (NLSSORT(name, 'NLS_SORT = SCHINESE_PINYIN_M'));
按中文拼音进行排序:SCHINESE_PINYIN_M
按中文部首进行排序:SCHINESE_RADICAL_M
按中文笔画进行排序:SCHINESE_STROKE_M
而oracle 9i是对中文的排序是默认按拼音排序(并不是指NLS_SORT = SCHINESE_PINYIN_M,而是说SQL中不指定NLS_SORT时对中文列排序时默认按拼音)的,跟之前的2进制编码排序有所不同.具体用法如下:
直接写在sql中,例如:
SELECT * FROM TEAM ORDER BY NLSSORT(排序字段名,'NLS_SORT = SCHINESE_PINYIN_M');
SELECT * FROM TEAM ORDER BY NLSSORT(排序字段名,'NLS_SORT = SCHINESE_STROKE_M');
SELECT * FROM TEAM ORDER BY NLSSORT(排序字段名,'NLS_SORT = SCHINESE_RADICAL_M');
配置在初始化参数NLS_SORT中,这可以在数据库创建时指定,也可以通过alter session来修改.如果是前者,则在所有session中生效.例如:
使用select * from NLS_SESSION_PARAMETERS;语句可以看到NLS_SORT的值.
更改配置文件:alter system set nls_sort='SCHINESE_PINYIN_M' scope=spfile;
更改session:alter SESSION set NLS_SORT = SCHINESE_PINYIN_M;
这里要额外注意一下性能问题,按oracle官方文档的解释,oracle在对中文列建立索引时,是按照2进制编码进行排序的,所以如果NLS_SORT被设置为BINARY时,排序则可以利用索引.如果不是2进制排序,而是使用上面介绍的3种针对中文的特殊排序,则oracle无法使用索引,会进行全表扫描.这点一定要注意,多用plsql工具比较一下执行效率.解决方法是,在此列上建立linguistic index.例如:CREATE INDEX nls_index ON my_table (NLSSORT(name, 'NLS_SORT = SCHINESE_PINYIN_M'));
相关文章推荐
- Hibernate 实现Oracle的中文汉字按照拼音排序
- Hibernate 实现Oracle的中文汉字按照拼音排序 之延续,通用的查询排序能力。
- Oracle中按照中文字段排序
- Oracle 中文字段进行排序的sql语句
- oracle 排序(中文,null的处理)
- 一月十日练习习题,1数组数据存入字典并输出2降序 和倒叙 输出数组中内容3对字符串当中信息进行查找是否存在4 把数组当中信息按照中文排序
- MSSQL 按照字段中文比划排序
- JAVA集合按照中文排序
- ios 按照拼音对数组中的中文字符串排序的算法
- oracle按照汉语拼音排序
- Oracle经典sql语句总结@sql-plus重点函数串讲与sql语句案例@中文排序详讲).doc
- 根据中文拼音首字母排序、取得中文拼音首字母函数 oracle 排序
- oracle 中文排序
- oracle 使用instr()函数对in查询出的记录按照in中的数据进行排序
- Oracle中针对中文进行排序
- Java字符串按照中文拼音排序
- oracle按照拼音、部首、笔画排序
- 解决oracle排序时按照汉字拼音排序不正确的问题
- javascript对中文按照拼音排序代码
- Oracle经典sql语句总结@sql-plus重点函数串讲与sql语句案例@中文排序详讲).doc