java 汉字基于拼音首字母检索

这篇博客介绍了如何在Java应用中实现基于拼音首字母的汉字检索功能。作者探讨了三种方法,包括添加额外字段、利用编码范围查询和使用Oracle函数。最终选择了通过Oracle的NLSSORT函数转换姓名为拼音首字母的方法,并提供了该函数的详细实现。
摘要由CSDN通过智能技术生成

     最近接手根据拼音首字母来检索中文的小功能, 比如输入A 可以把客户姓氏的第一个字的拼音首字母为A的全部检索出来

相信基本在一些应用站点上都可以看的到。

 

    之前没有写过类似的功能。刚拿到的时候也很郁闷。。 这怎么写, 又不能像正常查询一样  select * from Table where name like 'A%',   问过一些有经验的, 便给了如下几个实现方法:

 

     一、在表中增加一个字段,用于存储客户姓氏第一个字拼音的首字母。以后查询直接 name = 'A' 就OK了。 但公司不愿这样,因为现在表中已有数据,现在增加以及后期维护都很不方便, 便弃之。。

 

     二、利用gp2312的编码,比如以a开头的为 B0A1 到 B0C4 那么查询直接 select * from Table where substr(name,0,1) between 'B0A1' and 'B0C4'  就能直接把所需数据查询出来了。 不知此方法是否可行,因为现在数据库的编码是utf-8, 不能适用

 

    三、利用oracle 函数,将传入的姓名转成所需的姓氏拼音首字母,如: from Client c where F_TRANS_PINYIN_CAPITAL(c.userName) =

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值