转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> ORACLE >> 正文
【原创】oracle数据库应用中实现汉字“同音”查询         ★★★★

【原创】oracle数据库应用中实现汉字“同音”查询

作者:闵涛 文章来源:闵涛的学习笔记 点击数:3367 更新时间:2009/4/22 22:03:45
'''54212'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''yu'''',''''54233'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''yuan'''',''''54439'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''yue'''',''''54459'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''yun'''',''''54469'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''za'''',''''54481'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''zai'''',''''54484'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''zan'''',''''54491'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''zang'''',''''54495'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''zao'''',''''54498'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''ze'''',''''54512'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''zei'''',''''54516'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''zen'''',''''54517'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''zeng'''',''''54518'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''zha'''',''''54522'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''zhai'''',''''54698'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''zhan'''',''''54704'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''zhang'''',''''54721'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''zhao'''',''''54736'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''zhe'''',''''54746'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''zhen'''',''''54756'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''zheng'''',''''54772'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''zhi'''',''''54949'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''zhong'''',''''54992'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''zhou'''',''''55003'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''zhu'''',''''55017'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''zhua'''',''''55205'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''zhuai'''',''''55207'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''zhuan'''',''''55208'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''zhuang'''',''''55214'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''zhui'''',''''55221'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''zhun'''',''''55227'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''zhuo'''',''''55229'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''zi'''',''''55240'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''zong'''',''''55255'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''zou'''',''''55262'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''zu'''',''''55266'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''zuan'''',''''55274'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''zui'''',''''55276'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''zun'''',''''55280'''')
/
INSERT INTO T_PINYIN(HZPY,NUM) VALUES(''''zuo'''',''''55282'''')
/

接下来我们要编写一个函数来实现获取汉字拼音编码。在编写这个函数的过程中我发现了oracle处理中英文混合字符串的bug,因此函数中采用在任何字符串前添加一个★号来强制oracle把此字符串当作双字节来处理。代码如下:

create or replace function GetPinYin(Keyword in varchar2) return varchar2 is
begin
DECLARE
  i int;
  j int;
  PinYin varchar2(500);
  Temp varchar2(10);
  TempStr varchar2(2);
begin 
  i:=1;
  j:=Length(''''★''''||Keyword);
  PinYin:='''''''';
  While i<=j LOOP
    TempStr:=substr(''''★''''||KeyWord,i,1);
    select HZPY INTO Temp from BJXKS.t_Pinyin Where Num=(select max(num) from BJXKS.t_Pinyin Where Num<=ASCII(TempStr));
    Temp:=Replace(Temp,''''*'''',TempStr);
    Temp:=Replace(Temp,''''★'''','''''''');
    PinYin:=PinYin||Temp;
    i:=i+1;
  End loop;
 
  return(PinYin);
end;
end GetPinYin;

好了,现在可以用这个函数来实现汉字的同音查询了。如查询表table1中字段A中读音和“啊”一样的记录,SQL语句可以这样写:

select * from table1 where getpinyin(A) like ''''%a%''''

以上方法仅供参考,如有不妥请批评指正,谢谢!

上一页  [1] [2] [3] [4] [5] [6] 


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台