'''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] 没有相关教程
|