取拼音码 oracle,Oracle中生成汉字拼音码的函数(转载)

Oracle中生成汉字拼音码的函数(转载)

2018-11-21

效果:select fgetpy("中国") FROM dual;结果   zgCREATE OR REPLACE FUNCTION fgetpy (v_str VARCHAR2)RETURN VARCHAR2ASv_strlen   INT;v_return   VARCHAR2 (500);v_ii       INT;v_n        INT;v_c        VARCHAR2 (2);v_chn      VARCHAR2 (2);v_rc       VARCHAR2 (500);/*************************************************************************生成汉字拼音码的函数。 wallimn 2009-06-21**************************************************************************/BEGIN--dbms_output.put_line(v_str);v_rc := v_str;v_strlen := LENGTH (v_rc);v_return := "";v_ii := 0;WHILE v_ii < v_strlenLOOPv_ii := v_ii + 1;v_n := 63;SELECT SUBSTR (v_rc, v_ii, 1)INTO v_chnFROM DUAL;SELECT v_n + MAX (rowsf)INTO v_nFROM (SELECT chn, ROWNUM rowsfFROM (SELECT   chnFROM (SELECT "吖" chnFROM DUALUNIONSELECT "八"FROM DUALUNION ALLSELECT "嚓"FROM DUALUNION ALLSELECT "咑"FROM DUALUNION ALLSELECT "妸"FROM DUALUNION ALLSELECT "发"FROM DUALUNION ALLSELECT "旮"FROM DUALUNION ALLSELECT "铪"FROM DUALUNION ALLSELECT "丌"FROM DUAL              --because have no "i"UNION ALLSELECT "丌"FROM DUALUNION ALLSELECT "咔"FROM DUALUNION ALLSELECT "垃"FROM DUALUNION ALLSELECT "嘸"FROM DUALUNION ALLSELECT "拏"FROM DUALUNION ALLSELECT "噢"FROM DUALUNION ALLSELECT "妑"FROM DUALUNION ALLSELECT "七"FROM DUALUNION ALLSELECT "呥"FROM DUALUNION ALLSELECT "仨"FROM DUALUNION ALLSELECT "他"FROM DUALUNION ALLSELECT "屲"FROM DUALUNION ALLSELECT "屲"FROM DUALUNION ALLSELECT "屲"FROM DUALUNION ALLSELECT "夕"FROM DUALUNION ALLSELECT "丫"FROM DUALUNION ALLSELECT "帀"FROM DUALUNION ALLSELECT v_chnFROM DUAL) aORDER BY NLSSORT (chn, "NLS_SORT=SCHINESE_PINYIN_M")) c) bWHERE chn = v_chn;v_c := CHR (v_n);IF CHR (v_n) = "@"THEN                                                      --英文直接返回v_c := v_chn;END IF;v_return := v_return || v_c;v_return := lower(v_return);END LOOP;RETURN v_return;END fgetpy;此函数有一个BUG,不知道为什么会这样select fgetpy("她们") FROM dual的结果是 jm,"她"字的拼音首字母在函数里被转成了j,应该是t

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。

http://www.pinlue.com/style/images/nopic.gif

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值