CREATE OR REPLACE FUNCTION GET_PYSJM1 (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 || 'Z'; END IF; END LOOP; RETURN V_RETURN; END; END;
时间: 2023-05-20 21:01:15 浏览: 129
浅析Oracle中char和varchar2的区别
这是一个 Oracle 数据库中的 PL/SQL 函数,用于将输入的中文名字转换为拼音首字母。函数名为 GET_PYSJM1,输入参数为一个 VARCHAR2 类型的字符串 P_NAME,返回值也是一个 VARCHAR2 类型的字符串。函数内部定义了一个嵌套函数 F_NLSSORT,用于将输入的中文字符转换为对应的首字母编号。函数主体部分使用 FOR 循环遍历输入字符串的每个字符,调用 F_NLSSORT 函数将其转换为首字母编号,然后根据编号的范围将其转换为对应的拼音首字母,并将结果拼接到返回字符串 V_RETURN 中,最后返回 V_RETURN。
阅读全文