oracle生成首字母,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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值