Oracle中针对中文进行排序
来源:互联网 发布:什么叫做关系型数据库 编辑:程序博客网 时间:2024/04/29 10:32
转载http://www.cnblogs.com/discuss/articles/1866953.html
在oracle 9i之前,对中文的排序,是默认按2进制编码来进行排序的. 9i时增加了几种新的选择:
1.按中文拼音进行排序:SCHINESE_PINYIN_M
2.按中文部首进行排序:SCHINESE_RADICAL_M
3.按中文笔画进行排序:SCHINESE_STROKE_M
而oracle 9i是对中文的排序是默认按拼音排序(并不是指NLS_SORT = SCHINESE_PINYIN_M,而是说SQL中不指定NLS_SORT时对中文列排序时默认按拼音)的,跟之前的2进制编码排序有所不同.具体用法如下:
1.直接写在sql中,例如:
1.SELECT * FROM TEAM ORDER BY NLSSORT(排序字段名,'NLS_SORT = SCHINESE_PINYIN_M');2.SELECT * FROM TEAM ORDER BY NLSSORT(排序字段名,'NLS_SORT = SCHINESE_STROKE_M');3.SELECT * FROM TEAM ORDER BY NLSSORT(排序字段名,'NLS_SORT = SCHINESE_RADICAL_M');2.配置在初始化参数NLS_SORT中,这可以在数据库创建时指定,也可以通过alter session来修改.如果是前者,则在所有session中生效.例如: 1.使用select * from NLS_SESSION_PARAMETERS;语句可以看到NLS_SORT的值.2.更改配置文件:alter system set nls_sort='SCHINESE_PINYIN_M' scope=spfile;3.更改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'));
以下是oracle文档中的原文:
Note:
Setting NLS_SORT to anything other than BINARY causes a sort to use a full table scan, regardless of the path chosen by the optimizer. BINARY is the exception because indexes are built according to a binary order of keys. Thus the optimizer can use an index to satisfy the ORDER BY clause when NLS_SORT is set to BINARY. If NLS_SORT is set to any linguistic sort, the optimizer must include a full table scan and a full sort in the execution plan.
- Oracle中针对中文进行排序
- Oracle中针对中文进行排序
- Oracle中针对中文进行排序
- Oracle中针对中文进行排序
- Oracle中针对中文进行排序
- 在JAVA中针对LIST进行排序
- oracle中针对字段进行md5加密
- oracle按中文拼音进行排序
- Android里针对ListView中选项进行排序的方法
- Python 针对Json中某个关键字段进行排序
- 关于java中实现在oracle数据库中实现对中文首字母进行排序的解决方案
- 关于java中实现在oracle数据库中实现对中文首字母进行排序的解决方案
- Oracle中中文、数字,英文混杂形式的字段进行排序的方法
- MySQL中给中文进行排序
- 在Oracle中根据内容进行排序
- Oracle中按照中文字段排序
- 技巧:针对多列进行排序
- WPF 针对数据源某个属性进行排序
- ORACLE基本语法
- UILabel-使用总结
- closed-form solution (闭合解/解析解)和数值解的理解
- 系统性能调优(2)----数据库设计优化
- AM335x bootloader
- Oracle中针对中文进行排序
- Web开发者的福利 30段超实用CSS代码
- PLSQL中文乱码问题
- android程序升级
- Linux下用adb连接手机的问题解决
- Win7系统如何修改开机音乐
- wdOS/linux硬盘加载/挂载方法
- Quartz conTrigger 定时器表达式大全
- Linux-2.6.32.2内核在mini2440上的移植----LCD驱动移植