`
圣诞王子
  • 浏览: 84630 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

关于Oracle中文排序

 
阅读更多

 

前几天时间曾经看见有人提出的中文排序问题,当时有高手用DECODE解决的。不过如果值太多,毕竟这样写比较麻烦。

这几天一直在找关于这方面的例子,其实以前也曾看见过,只是一直未曾用到,也就未加留心,下面把通用的解决方法贴出来,和大家共享之。

 

    声明:以下所做测试,应该在oracle9i/10g以上。

 

    oracle9i之前,中文是按照二进制编码进行排序的。

    在oracle9i中新增了按照拼音、部首、笔画排序功能。可以分别通过设置NLS_SORT值来实现。

SCHINESE_RADICAL_M

    按照部首(第一顺序)、笔划(第二顺序)排序。

SCHINESE_STROKE_M

    按照笔划(第一顺序)、部首(第二顺序)排序。

SCHINESE_PINYIN_M

    按照拼音排序,系统的默认排序方式为拼音排序。

 

 

测试如下: 

 

--创建测试表

create table player

   (id number(*,0), 

          name varchar2(32)

   );

 

 

--插入测试数据

insert into PLAYER (ID, NAME)

values (1, '卡卡');

insert into PLAYER (ID, NAME)

values (2, '罗纳尔迪尼奥');

insert into PLAYER (ID, NAME)

values (3, '马尔递尼');

insert into PLAYER (ID, NAME)

values (4, '因扎吉');

insert into PLAYER (ID, NAME)

values (5, '舍甫琴柯');

insert into PLAYER (ID, NAME)

values (6, '西多夫');

insert into PLAYER (ID, NAME)

values (7, '帕托');

insert into PLAYER (ID, NAME)

values (8, '皮尔洛');

insert into PLAYER (ID, NAME)

values (9, '内斯塔');

commit;

 

--按照笔划排序

 

SQL> select * from player order by

  2  nlssort(name,'NLS_SORT=SCHINESE_STROKE_M');

 

        ID NAME

---------- --------------------------------

         3 马尔递尼

         9 内斯塔

         1 卡卡

         8 皮尔洛

         4 因扎吉

         6 西多夫

         7 帕托

         2 罗纳尔迪尼奥

         5 舍甫琴柯

 

已选择9行。

 

 

--按照部首排序

SQL> select * from player order by

  2  nlssort(name,'NLS_SORT=SCHINESE_RADICAL_M');

 

        ID NAME

---------- --------------------------------

         9 内斯塔

         1 卡卡

         4 因扎吉

         7 帕托

         8 皮尔洛

         2 罗纳尔迪尼奥

         5 舍甫琴柯

         6 西多夫

         3 马尔递尼

 

已选择9行。

 

 

--按照拼音排序,此为系统的默认排序方式

 

SQL> select * from player order by

  2  nlssort(name,'NLS_SORT=SCHINESE_PINYIN_M');

 

        ID NAME

---------- --------------------------------

         1 卡卡

         2 罗纳尔迪尼奥

         3 马尔递尼

         9 内斯塔

         7 帕托

         8 皮尔洛

         5 舍甫琴柯

         6 西多夫

         4 因扎吉

 

已选择9行。

 

 

--默认排序,检验

 

SQL> select * from player order by name;

 

        ID NAME

---------- --------------------------------

         1 卡卡

         2 罗纳尔迪尼奥

         3 马尔递尼

         9 内斯塔

         7 帕托

         8 皮尔洛

         5 舍甫琴柯

         6 西多夫

         4 因扎吉

 

已选择9行

分享到:
评论

相关推荐

    oracle数据库中汉字排序方法

    ### Oracle数据库中汉字排序方法 在Oracle数据库中处理中文数据时,经常需要对包含中文字符的数据表...通过以上内容的学习与实践,我们可以有效地在Oracle数据库中实现汉字排序功能,从而更好地管理和利用中文数据。

    oracle排序方法拼音,部首,笔画

    本文将详细介绍如何使用Oracle中的“NLS_SORT”功能,实现按照拼音、部首和笔画对中文数据进行排序的方法。 #### 一、Oracle9i中的NLS_SORT属性 Oracle9i及其后续版本提供了多种预定义的排序规则,其中包括针对...

    oracle__汉字排序

    本文将围绕Oracle数据库中的汉字排序功能进行深入探讨,特别是Oracle 9i版本及其之后版本中关于汉字排序的具体实现方式。 #### 二、Oracle 汉字排序方式 在Oracle中,可以通过设置`NLS_SORT`参数来控制汉字的排序...

    Oracle 中对中文字段进行排序.txt

    Oracle 中对中文字段进行排序.txt

    对Oracle 排序中的几种常用排序的介绍

    1. **按拼音排序**:Oracle支持按照汉字的拼音进行排序,这在处理中文数据时非常有用。可以使用`NLSSORT`函数配合`NLS_SORT`参数来实现。例如,以下语句会按照汉语拼音对`danwei`字段进行升序排序: ```sql select...

    oracle指定排序的方法详解

    Oracle9i之前,中文是按照二进制编码进行排序的。在oracle9i中新增了按照拼音、部首、笔画排序功能。 1、设置NLS_SORT参数值 SCHINESE_RADICAL_M 按照部首(第一顺序)、笔划(第二顺序)排序 SCHINESE_STROKE_M ...

    oracle汉字转拼音函数整理大全

    在Oracle数据库中,有时需要将汉字转换成拼音,尤其是在处理中文数据时。本篇文档详细介绍了两种用于转换汉字到拼音的自定义函数:`fn_getpyKGJG` 和 `fn_getpyWKG`。这些函数能够满足不同场景下对拼音格式的需求,...

    Oracle 汉字拼音简码获取

    给定的代码片段展示了如何在Oracle数据库中创建一个名为`ZLSPELLCODE`的函数,用于获取汉字字符串的拼音简码。该函数接受两个参数:`v_InstrInVarchar2`表示输入的汉字字符串,`v_OutNumInInteger`则是一个可选参数...

    Oracle 中文字段进行排序的sql语句

    在Oracle数据库中,对中文字段进行排序是一项常见的需求,特别是在处理中文字符的数据时。Oracle提供了多种方式来实现中文字段的排序,包括按照笔画、部首以及拼音。下面将详细阐述这些方法及其背后的原理。 首先,...

    oracle数据库汉字首字排序

    #### 一、Oracle数据库中的汉字排序 在Oracle数据库中,对于汉字排序的需求非常常见,尤其是在需要按照拼音或者笔画等规则进行排序的情况下。Oracle提供了一个强大的函数`NLSSORT()`来实现这种需求。 ##### 1. `...

    EasyUI Datagrid 中文排序的问题

    本文将详细介绍如何解决EasyUI Datagrid中的中文排序问题,并分别从前端和后端两个角度给出具体的实现方案。 #### 二、EasyUI Datagrid简介 EasyUI 是一个基于 jQuery 的简单而强大的 UI 库,它提供了大量的用户...

    Toad for Oracle 12.8简体中文语言包

    对于"简体中文语言包",这表明Toad for Oracle 12.8版本已经本地化为中文,使得中国用户在使用时无需面对英文界面的困扰,大大降低了学习和使用的难度。对于那些不熟悉英文的数据库管理人员和开发者来说,这是一个...

    oracle姓名中文转全拼函数

    Oracle姓名中文转全拼函数是解决在Oracle数据库中处理中文姓名时的一个常见需求,特别是考虑到汉字的多样性和复杂性,包括生僻字和多音字的处理。此函数旨在将中文姓名转换为全拼,方便进一步的数据处理或搜索。下面...

    关于Oracle中转中文,获取首字母的问题

    在Oracle数据库中处理中文字符,特别是需要将汉字转换为拼音并获取首字母,是一个常见的需求。这在构建索引、搜索优化或者特定的数据处理场景中非常有用。本篇将详细探讨如何在Oracle环境下实现这个功能。 首先,...

    Toad for Oracle中文简易教程

    总结,Toad for Oracle中文版为中国的Oracle用户提供了友好的使用环境,无论是日常的数据库管理,还是复杂的性能调优,都能提供有力的支持。通过熟悉并掌握上述功能,你将能更好地利用Toad提升数据库管理工作效率。

    ORACLE汉字转拼音

    在Oracle数据库环境中,有时我们需要对汉字字段进行处理,例如转换为拼音,以便于搜索、排序或者与其他系统集成。"ORACLE汉字转拼音"这个主题就聚焦于如何在Oracle数据库中实现这一功能。以下是对这个知识点的详细...

    oracle汉字转拼音

    根据提供的文件信息,本文将详细解释如何在Oracle数据库中实现汉字到拼音的转换,并通过具体的代码实例进行说明。 ### Oracle数据库中的汉字转拼音 #### 背景介绍 在处理包含中文字符的数据时,有时我们需要将汉字...

    oracle 中文转拼音工具包

    总的来说,"Oracle中文转拼音工具包"提供了一种有效的方法,帮助开发者在Oracle数据库环境中处理中文字符,将它们转化为拼音形式,从而扩展了数据库的功能,使其能够更好地应对中文数据的处理挑战。正确理解和使用这...

    oracle提取汉字拼音和首字母

    在Oracle数据库环境中,有时我们需要对汉字进行处理,例如获取汉字的拼音或首字母,这在中文数据检索、排序或建立索引时非常有用。本文将详细介绍如何使用PL/SQL存储过程来实现这一功能。 首先,我们需要理解Oracle...

    DatabaseHelper_oracle_c#Oracle_C#_ManagedDataAccess_oracle操作_

    在.NET开发环境中,使用C#语言与Oracle数据库进行交互是一种常见的需求。Oracle.ManagedDataAccess是Oracle公司提供的一个客户端库,专门用于C#等.NET语言的Oracle数据库连接和操作。这个库是完全托管的,无需依赖...

Global site tag (gtag.js) - Google Analytics