前几天时间曾经看见有人提出的中文排序问题,当时有高手用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中的“NLS_SORT”功能,实现按照拼音、部首和笔画对中文数据进行排序的方法。 #### 一、Oracle9i中的NLS_SORT属性 Oracle9i及其后续版本提供了多种预定义的排序规则,其中包括针对...
本文将围绕Oracle数据库中的汉字排序功能进行深入探讨,特别是Oracle 9i版本及其之后版本中关于汉字排序的具体实现方式。 #### 二、Oracle 汉字排序方式 在Oracle中,可以通过设置`NLS_SORT`参数来控制汉字的排序...
Oracle 中对中文字段进行排序.txt
1. **按拼音排序**:Oracle支持按照汉字的拼音进行排序,这在处理中文数据时非常有用。可以使用`NLSSORT`函数配合`NLS_SORT`参数来实现。例如,以下语句会按照汉语拼音对`danwei`字段进行升序排序: ```sql select...
Oracle9i之前,中文是按照二进制编码进行排序的。在oracle9i中新增了按照拼音、部首、笔画排序功能。 1、设置NLS_SORT参数值 SCHINESE_RADICAL_M 按照部首(第一顺序)、笔划(第二顺序)排序 SCHINESE_STROKE_M ...
在Oracle数据库中,有时需要将汉字转换成拼音,尤其是在处理中文数据时。本篇文档详细介绍了两种用于转换汉字到拼音的自定义函数:`fn_getpyKGJG` 和 `fn_getpyWKG`。这些函数能够满足不同场景下对拼音格式的需求,...
给定的代码片段展示了如何在Oracle数据库中创建一个名为`ZLSPELLCODE`的函数,用于获取汉字字符串的拼音简码。该函数接受两个参数:`v_InstrInVarchar2`表示输入的汉字字符串,`v_OutNumInInteger`则是一个可选参数...
在Oracle数据库中,对中文字段进行排序是一项常见的需求,特别是在处理中文字符的数据时。Oracle提供了多种方式来实现中文字段的排序,包括按照笔画、部首以及拼音。下面将详细阐述这些方法及其背后的原理。 首先,...
#### 一、Oracle数据库中的汉字排序 在Oracle数据库中,对于汉字排序的需求非常常见,尤其是在需要按照拼音或者笔画等规则进行排序的情况下。Oracle提供了一个强大的函数`NLSSORT()`来实现这种需求。 ##### 1. `...
本文将详细介绍如何解决EasyUI Datagrid中的中文排序问题,并分别从前端和后端两个角度给出具体的实现方案。 #### 二、EasyUI Datagrid简介 EasyUI 是一个基于 jQuery 的简单而强大的 UI 库,它提供了大量的用户...
对于"简体中文语言包",这表明Toad for Oracle 12.8版本已经本地化为中文,使得中国用户在使用时无需面对英文界面的困扰,大大降低了学习和使用的难度。对于那些不熟悉英文的数据库管理人员和开发者来说,这是一个...
Oracle姓名中文转全拼函数是解决在Oracle数据库中处理中文姓名时的一个常见需求,特别是考虑到汉字的多样性和复杂性,包括生僻字和多音字的处理。此函数旨在将中文姓名转换为全拼,方便进一步的数据处理或搜索。下面...
在Oracle数据库中处理中文字符,特别是需要将汉字转换为拼音并获取首字母,是一个常见的需求。这在构建索引、搜索优化或者特定的数据处理场景中非常有用。本篇将详细探讨如何在Oracle环境下实现这个功能。 首先,...
总结,Toad for Oracle中文版为中国的Oracle用户提供了友好的使用环境,无论是日常的数据库管理,还是复杂的性能调优,都能提供有力的支持。通过熟悉并掌握上述功能,你将能更好地利用Toad提升数据库管理工作效率。
在Oracle数据库环境中,有时我们需要对汉字字段进行处理,例如转换为拼音,以便于搜索、排序或者与其他系统集成。"ORACLE汉字转拼音"这个主题就聚焦于如何在Oracle数据库中实现这一功能。以下是对这个知识点的详细...
根据提供的文件信息,本文将详细解释如何在Oracle数据库中实现汉字到拼音的转换,并通过具体的代码实例进行说明。 ### Oracle数据库中的汉字转拼音 #### 背景介绍 在处理包含中文字符的数据时,有时我们需要将汉字...
总的来说,"Oracle中文转拼音工具包"提供了一种有效的方法,帮助开发者在Oracle数据库环境中处理中文字符,将它们转化为拼音形式,从而扩展了数据库的功能,使其能够更好地应对中文数据的处理挑战。正确理解和使用这...
在Oracle数据库环境中,有时我们需要对汉字进行处理,例如获取汉字的拼音或首字母,这在中文数据检索、排序或建立索引时非常有用。本文将详细介绍如何使用PL/SQL存储过程来实现这一功能。 首先,我们需要理解Oracle...
在.NET开发环境中,使用C#语言与Oracle数据库进行交互是一种常见的需求。Oracle.ManagedDataAccess是Oracle公司提供的一个客户端库,专门用于C#等.NET语言的Oracle数据库连接和操作。这个库是完全托管的,无需依赖...