Oracle取得中文拼音首字母函数

 

CREATE
OR REPLACE FUNCTION F_TRANS_PINYIN_CAPITAL (P_NAME IN VARCHAR2) RETURN VARCHAR2 AS V_COMPARE VARCHAR2 (100) ; V_RETURN VARCHAR2 (4000) ; FUNCTION F_NLSSORT (P_WORD IN VARCHAR2) RETURN VARCHAR2 AS
BEGIN
    RETURN NLSSORT (
        P_WORD,
        'NLS_SORT=SCHINESE_PINYIN_M'
    ) ;
END ;
BEGIN
    FOR I IN 1..LENGTH (P_NAME) LOOP V_COMPARE := F_NLSSORT (SUBSTR(P_NAME, I, 1)) ;
IF V_COMPARE >= F_NLSSORT ('')
AND V_COMPARE <= F_NLSSORT ('') THEN
    V_RETURN := V_RETURN || 'a' ;
ELSIF V_COMPARE >= F_NLSSORT ('')
AND V_COMPARE <= F_NLSSORT ('簿 ') THEN
    V_RETURN := V_RETURN || 'b' ;
ELSIF V_COMPARE >= F_NLSSORT ('')
AND V_COMPARE <= F_NLSSORT ('') THEN
    V_RETURN := V_RETURN || 'c' ;
ELSIF V_COMPARE >= F_NLSSORT ('')
AND V_COMPARE <= F_NLSSORT ('') THEN
    V_RETURN := V_RETURN || 'd' ;
ELSIF V_COMPARE >= F_NLSSORT ('')
AND V_COMPARE <= F_NLSSORT ('') THEN
    V_RETURN := V_RETURN || 'e' ;
ELSIF V_COMPARE >= F_NLSSORT ('')
AND V_COMPARE <= F_NLSSORT ('') THEN
    V_RETURN := V_RETURN || 'f' ;
ELSIF V_COMPARE >= F_NLSSORT ('')
AND V_COMPARE <= F_NLSSORT ('') THEN
    V_RETURN := V_RETURN || 'g' ;
ELSIF V_COMPARE >= F_NLSSORT ('')
AND V_COMPARE <= F_NLSSORT ('') THEN
    V_RETURN := V_RETURN || 'h' ;
ELSIF V_COMPARE >= F_NLSSORT ('')
AND V_COMPARE <= F_NLSSORT ('') THEN
    V_RETURN := V_RETURN || 'j' ;
ELSIF V_COMPARE >= F_NLSSORT ('')
AND V_COMPARE <= F_NLSSORT ('') THEN
    V_RETURN := V_RETURN || 'k' ;
ELSIF V_COMPARE >= F_NLSSORT ('')
AND V_COMPARE <= F_NLSSORT ('') THEN
    V_RETURN := V_RETURN || 'l' ;
ELSIF V_COMPARE >= F_NLSSORT ('')
AND V_COMPARE <= F_NLSSORT ('') THEN
    V_RETURN := V_RETURN || 'm' ;
ELSIF V_COMPARE >= F_NLSSORT ('')
AND V_COMPARE <= F_NLSSORT ('') THEN
    V_RETURN := V_RETURN || 'n' ;
ELSIF V_COMPARE >= F_NLSSORT ('')
AND V_COMPARE <= F_NLSSORT ('') THEN
    V_RETURN := V_RETURN || 'o' ;
ELSIF V_COMPARE >= F_NLSSORT ('')
AND V_COMPARE <= F_NLSSORT ('') THEN
    V_RETURN := V_RETURN || 'p' ;
ELSIF V_COMPARE >= F_NLSSORT ('')
AND V_COMPARE <= F_NLSSORT ('') THEN
    V_RETURN := V_RETURN || 'q' ;
ELSIF V_COMPARE >= F_NLSSORT ('')
AND V_COMPARE <= F_NLSSORT ('') THEN
    V_RETURN := V_RETURN || 'r' ;
ELSIF V_COMPARE >= F_NLSSORT ('')
AND V_COMPARE <= F_NLSSORT ('') THEN
    V_RETURN := V_RETURN || 's' ;
ELSIF V_COMPARE >= F_NLSSORT ('')
AND V_COMPARE <= F_NLSSORT ('') THEN
    V_RETURN := V_RETURN || 't' ;
ELSIF V_COMPARE >= F_NLSSORT ('')
AND V_COMPARE <= F_NLSSORT ('') THEN
    V_RETURN := V_RETURN || 'w' ;
ELSIF V_COMPARE >= F_NLSSORT ('')
AND V_COMPARE <= F_NLSSORT ('') THEN
    V_RETURN := V_RETURN || 'x' ;
ELSIF V_COMPARE >= F_NLSSORT ('')
AND V_COMPARE <= F_NLSSORT ('') THEN
    V_RETURN := V_RETURN || 'y' ;
ELSIF V_COMPARE >= F_NLSSORT ('')
AND V_COMPARE <= F_NLSSORT ('') THEN
    V_RETURN := V_RETURN || 'z' ;
END
IF ;
END LOOP ; RETURN V_RETURN ;
END ;
SELECT
    F_TRANS_PINYIN_CAPITAL (
        '湖北信业建设项目管理有限公司'
    )
FROM
    dual;

转载于:https://www.cnblogs.com/wsw0515/p/3596415.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值