createorreplacefunctioncsound(c in varchar2,op in integerdefault1)
returnvarchar2/*
作者:chensq@itpub.net
日期:2005-05-18 22:30
说明:此函数用于将汉字转换为其发音的首字母,对于ascii码值在1~128间的字符不作任何处理,其它字符返回错误信息。
用法:默认情况下,只对第一个字符进行转换,如果加上不等于1的参数,则对全字符串进行处理,支持中英文合编。如:
SQL> select csound('中国人用自己的sound()函数',2) from dual ;
CSOUND('中国人用自己的SOUND()
-------------------------------------------------------------
ZGRYZJDsound()HS
SQL> select csound('中国人用自己的sound()函数') from dual ;
CSOUND('中国人用自己的SOUND()
--------------------------------------------------------------
Z
备注:此函数只在ZHS16GBK字符集的Oracle 9.2中通过,其它平台没有测试,请根据实际需要作相应的修改。
*/is
c1 varchar2(2);c2 varchar2(2);p integer;n1 integer;n2 integer;csound varchar2(32767);beginifop=1 then p:=1;
elsep:=length(c);endif;
fori in 1..p
loop
c2:=substr(c,i,1);n1:=floor(ascii(c2)/256);n2:=mod(ascii(c2),256);
ifn1=0andn2<=129 then
c1:=c2;elsif n2<>127andn2<>255andnot(n2 between 0and63)then
selectcasewhen c2>='丂'andc2='芭'andc2='擦'andc2='搭'andc2='蛾'andc2='发'andc2='噶'andc2='哈'andc2='击'andc2='喀'andc2='垃'andc2='妈'andc2='拿'andc2='哦'andc2='啪'andc2='期'andc2='然'andc2='撒'andc2='塌'andc2='挖'andc2='稀'andc2='压'andc2='匝'andc2<='鼱'then'Z'end
into c1
from dual;
elsec1:='er';endif;csound:=csound||c1;end loop;
returncsound;end;SQL>select csound('中国人用自己的sound()函数',2)from dual;CSOUND('中国人用自己的SOUND()
----------------------------------------------------------------
ZGRYZJDsound()HS
SQL> select csound('台海分离美国得利',2) from dual ;
CSOUND('台海分离美国得利',2)
---------------------------------------------------------------
THFLMGDL
SQL> select csound('热烈庆祝财富论坛圆满召开',2) from dual ;
CSOUND('热烈庆祝财富论坛圆满召---------------------------------------------------------------RLQZCFLTYMZK[@more@]