日期:2014-05-18  浏览次数:20898 次

如何根据汉字的拼音进行搜索排序?急啊!急啊!急啊!
在JAVA中如何根据汉字的拼音进行搜索排序?我用的是ORACLE数据库,我是通过几张表来查询一些电厂的相关信息:
select a.*,b.tlsbmc,c.dcmc from 
tl.xxfb_rb_tlsb a,tl.jbcs_tlsb b,tl.jbcs_dcxx c where 
a.tlsbbh=b.tlsbbh and b.dcbh=c.dcbh
tl.jbcs_dcxx 这张表里面包括了一些电厂的信息,电厂名称(dcmc)有这些:
镇燃厂
长广厂
紧水滩
乌溪江
黄坛口
北仑厂
乌沙山
嘉兴厂
半山厂
镇海厂
龙燃厂 等等...

我该如何按电厂的拼音来进行排序啊???
请各位朋友告诉我应如何去实现?最好是有具体的例子,该用什么样的方法来实现???谢谢各位朋友了!急啊!急啊!急啊!

------解决方案--------------------
一般表中有个拼音字段,用它来排序,或做特效提示
------解决方案--------------------
Oracle9i之前,中文是按照二进制编码进行排序的。
在oracle9i中新增了按照拼音、部首、笔画排序功能。设置NLS_SORT值
SCHINESE_RADICAL_M 按照部首(第一顺序)、笔划(第二顺序)排序
SCHINESE_STROKE_M 按照笔划(第一顺序)、部首(第二顺序)排序
SCHINESE_PINYIN_M 按照拼音排序,系统的默认排序方式为拼音排序

举例如下:
表名为 dept ,其中name字段是中文,下面分别实现按照单位名称的笔划、部首和拼音排序。
1: //按照笔划排序
2: select * from dept order by nlssort(name,'NLS_SORT=SCHINESE_STROKE_M');
3: //按照部首排序
4: select * from dept order by nlssort(name,'NLS_SORT=SCHINESE_RADICAL_M');
5: //按照拼音排序,此为系统的默认排序方式
6: select * from dept order by nlssort(name,'NLS_SORT=SCHINESE_PINYIN_M'); 注意,该SQL指令并非标准指令,在SQLServer下面的实现方式并不相同。