ORACLE获取汉字拼音首字母的函数

 

CREATE OR REPLACE FUNCTION PUB_GET_PY(p_汉字 CHAR DEFAULT '%')
       RETURN CHAR
IS

/********************************************************************
过程名称:PUB_GET_PY
功能:生成汉字拼音的首字符
开发者:葛长伟(dba123.com)
联系方式:
最后修改时间:2004.02.14
说明:

修改记录:
      2004.02.14 葛长伟 创建
********************************************************************/

v_汉字内码      NUMBER(8);
v_拼音          CHAR(1);
BEGIN
v_汉字内码 := ASCII(p_汉字);

IF v_汉字内码 BETWEEN 45217 AND 45252 THEN
    v_拼音 := 'A';
ELSIF v_汉字内码 BETWEEN 45253 AND 45760 THEN
    v_拼音 := 'B';
ELSIF v_汉字内码 BETWEEN 45761 AND 46317 THEN
    v_拼音 := 'C';
ELSIF v_汉字内码 BETWEEN 46318 AND 46825 THEN
    v_拼音 := 'D';
ELSIF v_汉字内码 BETWEEN 46826 AND 47009 THEN
    v_拼音 := 'E';
ELSIF v_汉字内码 BETWEEN 47010 AND 47296 THEN
    v_拼音 := 'F';
ELSIF v_汉字内码 BETWEEN 47297 AND 47613 THEN
    v_拼音 := 'G';
ELSIF v_汉字内码 BETWEEN 47614 AND 48116 THEN
    v_拼音 := 'H';
ELSIF v_汉字内码 BETWEEN 48117 AND 49061 THEN
    v_拼音 := 'J';
ELSIF v_汉字内码 BETWEEN 49062 AND 49323 THEN
    v_拼音 := 'K';
ELSIF v_汉字内码 BETWEEN 49324 AND 49895 THEN
    v_拼音 := 'L';
ELSIF v_汉字内码 BETWEEN 49896 AND 50370 THEN
    v_拼音 := 'M';
ELSIF v_汉字内码 BETWEEN 50371 AND 50613 THEN
    v_拼音 := 'N';
ELSIF v_汉字内码 BETWEEN 50614 AND 50621 THEN
    v_拼音 := 'O';
ELSIF v_汉字内码 BETWEEN 50622 AND 50925 THEN
    v_拼音 := 'P';
ELSIF v_汉字内码 BETWEEN 50926 AND 51386 THEN
    v_拼音 := 'Q';
ELSIF v_汉字内码 BETWEEN 51387 AND 51445 THEN
    v_拼音 := 'R';
ELSIF v_汉字内码 BETWEEN 51446 AND 52217 THEN
    v_拼音 := 'S';
ELSIF v_汉字内码 BETWEEN 52218 AND 52697 THEN
    v_拼音 := 'T';
ELSIF v_汉字内码 BETWEEN 52698 AND 52979 THEN
    v_拼音 := 'W';
ELSIF v_汉字内码 BETWEEN 52980 AND 53640 THEN
    v_拼音 := 'X';
ELSIF v_汉字内码 BETWEEN 53641 AND 54480 THEN
    v_拼音 := 'Y';
ELSIF v_汉字内码 BETWEEN 54481 AND 55289 THEN
    v_拼音 := 'Z';
ELSE
    v_拼音 := NULL;
END IF;

RETURN v_拼音;
END PUB_GET_PY;

提取汉字字符串的拼音的首字母,其中去掉空格保留原有字母和数字:

create or replace FUNCTION PUB_GET_STRING_PY(strs varchar2)
return varchar2
is
/***********************************
过程名称:PUB_GET_STRING_PY
功能:生成汉字字符串的拼音首字符
开发者:贺佳利
联系方式:
最后修改时间:2009.09.09
说明:

修改记录:
      2009.09.09 贺佳利 创建
**********************************/
v_length number;
v_char varchar2(2);
v_charlength number;
v_charPY varchar2(2);
i int:=1;
myresult varchar2(500):='';
begin
--获取字符串长度
v_length:=length(strs);
while i<=v_length
loop
   --按顺序取得字符
   v_char:=substr(strs,i,1);
   v_charlength:=lengthb(rtrim(v_char));
   v_charPY:=rtrim(v_char);
   --判断是否是汉字
   if v_charlength=2 then
     v_charPY:=pub_get_py(rtrim(v_char));
   end if;
   --将拼音进行连接
   myresult:=myresult || v_charPY;
   i:=i+1;
end loop;
return myresult;
end PUB_GET_STRING_PY;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/611609/viewspace-751486/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/611609/viewspace-751486/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值