CREATE OR REPLACE Function F_GetHzPy(V_HZ Varchar2,V_XS Varchar2 Default 'U',V_FG Varchar2 Default ' ') Return Varchar2 As V_PY Varchar2(100) Default NULL; L_HZ Varchar2(8); L_PY Varchar2(24); I Number; Cursor CUR_PY Is Select C_PY From XT_HZPY Where C_HZ = L_HZ AND ROWNUM<2; Cursor CUR_PT Is Select SubstrB(C_PY,1,1) From XT_HZPY Where C_HZ = L_HZ AND ROWNUM<2; --获取汉字拼音函数F_GetHzPy('汉字串','返回大小写,默认为大写,传U为大写,其他字符或D为小写','返回拼音值的每个汉字拼音的间隔符号,默认为空格') --例如:F_GetHzPy('中华民族','D','/') 返回值为'zhong/hua/minzu' --例如:F_GetHzPy('中华民族') 返回值为'ZHONG HUA MINZU' --拼音头例如:F_GetHzPy('中华民族','D','PT') 返回值为'zhmz' Begin I:=1; While I<= Length(V_HZ) Loop L_HZ := Substr(V_HZ,I,1); L_PY:=NULL; If upper(V_FG)<>'PT' Then OPEN CUR_PY; FETCH CUR_PY INTO L_PY; CLOSE CUR_PY; Else OPEN CUR_PT; FETCH CUR_PT INTO L_PY; CLOSE CUR_PT; End If; L_PY:=Replace(L_PY,' ',''); If Nvl(L_PY,'NULL')='NULL' Then L_PY:=L_HZ; End If; If V_XS='U' Then L_PY:=upper(L_PY); End If; If I=Length(V_HZ) Then V_PY:=V_PY||L_PY; Else If V_PY Is NULL Then V_PY:=L_PY; Else If upper(V_FG)<>'PT' Then V_PY:=V_PY||V_FG||L_PY; Else V_PY:=V_PY||L_PY; End If; End If; End If; I:=I+1; End Loop; V_PY:=Trim(V_PY); Return V_PY; End; /
oracle怎么改成汉语,oracle将汉字转换成拼音的函数。
最新推荐文章于 2022-09-19 19:34:49 发布