最近接手根据拼音首字母来检索中文的小功能, 比如输入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) =