`

Oracle的SQL的中文排序

阅读更多
在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'));




http://www.cnblogs.com/discuss/articles/1866953.html
分享到:
评论

相关推荐

    Oracle Sql基础(beginning oracle sql中文版)

    本资源“Oracle Sql基础(beginning oracle sql中文版)”旨在为初学者提供一个全面的Oracle SQL学习指南。让我们深入探讨Oracle SQL的基础知识。 一、SQL简介 SQL(结构化查询语言)是用于管理关系数据库的标准...

    Oracle SQL 官方文档

    Oracle SQL 是一种强大的数据库查询和编程语言,广泛用于管理和操作Oracle数据库系统。11g第二版(11G2)是Oracle的一个重要版本,提供了许多增强功能和优化。本官方文档集包括四份重要的参考资料,涵盖了Oracle SQL...

    Oracle四大宝典之一:Oracle Sql基础 中文版

    第三章 ORACLE SQL 单行函数 第四章 从多表中查询数据 第五章 用组函数合计数据 第六章 子查询 第七章 操纵数据 第八章 创建和管理表 第九章 内置约束 第十章 创建视图 第十一章 其他数据库对象 第十二章 控制用户...

    OracleSQLDeveloper

    Oracle SQL Developer是Oracle生态系统中不可或缺的一部分,尤其对于那些需要频繁与Oracle数据库交互的开发者和DBA来说,它提供了一站式的解决方案,提高了工作效率并简化了数据库管理工作。无论你是初学者还是经验...

    Oracle SQL 内置函数大全

    Oracle SQL 内置函数大全 SQL中的单记录函数 给出整数,返回对应的字符 连接两个字符串 增加或减去月份 用于对查询到的结果进行排序输出

    PRO ORACLE SQL PDF 英文版

    《Pro Oracle SQL》是Oracle SQL领域的一本权威指南,尤其针对11gR2版本进行了深入探讨。本书全面覆盖了Oracle SQL的各种概念、语法和高级特性,旨在帮助读者从初级到高级逐步提升对Oracle数据库查询语言的理解和...

    oracle SQL语法大全

    在Oracle SQL中,我们还可以使用DML(数据操纵语言)进行更复杂的操作。 二、SELECT语句 SELECT语句是SQL中最常用的,用于从表中检索数据。其基本语法是: ```sql SELECT column1, column2, ... FROM table_name; `...

    Oracle SQL:经典练习题(附答案)

    通过这些练习,你可以逐步掌握Oracle SQL的基本操作,提高在实际工作中处理数据的能力。同时,附带的答案将帮助你检查自己的理解和解答是否正确,进一步巩固学习成果。不断实践和理解,是成为Oracle SQL高手的关键...

    OracleSQL必备参考

    2. **子查询**:Oracle SQL支持子查询,这允许在单个查询中嵌套另一个查询,用于检索满足特定条件的数据。例如,你可以用子查询找出某个部门薪水最高的员工。 3. **连接(JOIN)操作**:在处理多个表的数据时,JOIN...

    oracle sql_tuning

    1. **SQL执行计划**:SQL执行计划是Oracle解析器为每个SQL语句制定的执行策略,包括表的扫描方式(全表扫描或索引扫描)、连接顺序、排序操作等。理解执行计划有助于找出性能瓶颈并进行优化。 2. **绑定变量**:...

    Oracle SQL(SQL for Oracle)

    Oracle SQL,全称为结构化查询语言在Oracle数据库环境中的应用,是数据库管理员和开发人员用于检索、更新和管理Oracle数据库的核心工具。Oracle SQL是SQL标准的扩展,它提供了许多特有的功能,以满足企业级数据库...

    Oracle SQL*Plus Pocket Reference, 2nd Edition

    ### Oracle SQL*Plus 口袋参考手册第二版关键知识点概览 #### 1.1 引言 本书《Oracle SQL*Plus Pocket Reference, 2nd Edition》是一部针对Oracle SQL*Plus及其常用SQL查询和数据操作语句的快速参考指南。作者...

    oracle sql 大全(三个文档)

    Oracle SQL大全,正如标题所言,是一套涵盖了Oracle数据库系统中SQL语言的综合学习资源。这套资料主要由三个文档组成,分别是"Oracle8i_9i数据库基础.pdf"、"oracle1.pdf"和"SQL基础.pdf",它们分别从不同角度深入浅...

    ORACLESQL性能优化.pptx

    Oracle SQL 性能优化是数据库管理中非常重要的一环。通过对 SQL 语句执行的过程、Oracle 优化器、表之间的关联、如何得到 SQL 执行计划、如何分析执行计划等内容的讨论,可以逐步掌握 SQL 优化的过程。 在 SQL ...

    Oracle Sql性能调优.ppt

    SQL 执行计划是 Oracle 数据库执行 SQL 语句的计划,它包括索引使用、 Join 顺序、排序顺序等。通过对执行计划的优化,可以提高数据库的响应速度和吞吐量。 8. 索引使用优化 索引使用优化是 Oracle 调优的一个重要...

    Pro Oracle SQL Development

    《Pro Oracle SQL Development》这本书是Oracle SQL开发的专业指南,它深入探讨了Oracle数据库系统中的SQL语言使用和优化。Oracle SQL是用于管理和操作Oracle数据库的强大工具,对于任何在Java开发中涉及Oracle...

    ORACLE SQL官方教程

    Oracle SQL是数据库管理领域中最广泛使用的查询语言之一,尤其在Oracle数据库系统中扮演着核心角色。本教程基于ORACLE的官方SQL教材,旨在提供全面且深入的SQL学习资源,帮助初学者和进阶用户掌握这一强大的数据操作...

    oracle sql 排序

    总结三种排序方式的共同点和不同点,已经排除空值后排序的oracle语句用法

    oracle-sql.rar_oracle

    Oracle SQL是数据库管理领域中的重要组成部分,特别是在Oracle数据库系统中,它是进行数据操作和分析的主要语言。本压缩包“oracle-sql.rar_oracle”显然针对的是Oracle SQL的学习资源,特别是对于初学者而言,它...

Global site tag (gtag.js) - Google Analytics