首页 > 数据库 >oracle 根据汉字生成首字母简拼(助记码)

oracle 根据汉字生成首字母简拼(助记码)

时间:2022-10-13 18:56:38浏览次数:72  
标签:COMPARE RETURN 助记 首字母 VARCHAR2 oracle NLSSORT

1.情景展示

如何根据中文,生成汉字首字母拼音?

3.具体实现

CREATE OR REPLACE FUNCTION "GET_ZJM" (P_NAME  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;

3.调用示例

SELECT GET_ZJM('博客园') FROM DUAL

注意:

该函数的弊端是:只能识别中文,换句话说,就是:不能识别英文。

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 相关推荐:

标签:COMPARE,RETURN,助记,首字母,VARCHAR2,oracle,NLSSORT
From: https://www.cnblogs.com/Marydon20170307/p/16789293.html

相关文章

  • oracle 创建md5函数
    1.情景展示在oracle当中,如何使用md5进行加密?2.具体分析通过调用DBMS_OBFUSCATION_TOOLKIT.MD5()函数来实现;DBMS_OBFUSCATION_TOOLKIT.MD5返回的字串,是RAW类型,要正确......
  • Oracle数据库下的DDL、DML、DQL、TCL、DCL
    首发微信公众号:SQL数据库运维原文链接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247485212&idx=1&sn=450e9e94fa709b5eeff0de371c62072b&chksm=ea37536cdd......
  • oracle11204rac更换ASM存储
    介绍迁移的简单过程。步骤如下:1、划分asmdisk,并检查或更改udev配置文件,使得新存储的asmdisk对asm实例可识别。2、备份OCR、Votingdisk、ASMdiskheader和数据库;......
  • Oracle数据恢复
     注意事项恢复被delete删除的数据,删除时间点很关键,orcle所在服务器的时间和真实时间可能不同。比如,你在自己电脑显示时间为2022/10/1310:15:02时,误删了数据,而此时orcl......
  • Oracle的SYSAUX表空间
    在Oracle10g版本中,引入了SYSTEM表空间的一个辅助表空间:SYSAUX表空间。        SYSAUX表空间存放一些其他的metadata组件,如OEM,Streams等会默认存放在SYSAUX......
  • Oracle SQL 性能調整
    1.选用适合的ORACLE优化器  ORACLE的优化器共有3种:  a. RULE(基于规则)  b.COST(基于成本) c.CHOOSE(选择性)  设置缺省的优化器,可以通过对init.ora......
  • oracle修改字段类型报错ORA-01439: column to be modified must be empty to change d
    可用如下方式,都是一样的,修改字段类型的列的数据必须为空!ORA-01440:要减小精度或标度,则要修改的列必须为空问题修复-信铁寒胜-博客园(cnblogs.com) ......
  • 【Vegas原创】Oracle Dblink(链接服务器)创建(Oracle对Oracle的链接)以及SQL对Oracle的互
    Oracle对Oracle的链接:创建:CREATEPUBLICDATABASELINKlinknameCONNECTTOusernameIDENTIFIEDBYpasswordUSING‘tnsname’删除:DROPPUBLICDATABASELINKlin......
  • 使用java代码连接oracle
    Connectionconn=null;try{Class.forName("oracle.jdbc.OracleDriver");//数据库IPStringip="oracle数据库IP地址或者是localhost";//数据库......
  • oracle 21c expdp报错误UDE-31623
     环境:OS:Centos7DB:21C 导出报错expdpc##goldengate/goldengate@tnspdb1tables=hxl.tb_testdumpfile=tb_test.dmpFLASHBACK_SCN=4990304parallel=5direct......