oracle汉字转拼音首字母函数

本内容来源网络,源自哪里我给忘了φ(゜▽゜*)♪。

我相信,大佬一定会原谅我的O(∩_∩)O

正题如下

  • 这是个oracle函数,在sql窗口或者放在脚本里执行一下就可以开心的调用了o(* ̄▽ ̄*)ブ;
    • 调用引例:

      SELECT HANZI_TO_PINYIN('李琛') FROM DUAL;
      dual最小表,只返回一条记录,目的就是维持句子语法完整。

      函数体如下:

      CREATE OR REPLACE FUNCTION HANZI_TO_PINYIN (P_NAME IN VARCHAR2)
      RETURN VARCHAR2
      AS
      V_COMPARE VARCHAR2 (100);
      V_RETURN VARCHAR2 (4000);
      BEGIN
      DECLARE
      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;
      END;

posted @ 2020-06-05 09:01  夏夜香颂  阅读(1386)  评论(0)    收藏  举报