oracle中过滤中文字符或者汉字的函数

摘要:
CREATEORREPLACEFUNCTIONGET_CHINESE(P_NAMEINVARCHAR2)RETURNVARCHAR2ISV_CODEVARCHAR2(30000):=“”;V_chineseverarch2(4000):=“”;V_ NON_ chineseverarch2(4000):=“”;V_ COMMAPLS_整数;V_ CODE_ QPLS_整数;V_代码_

CREATE OR REPLACE FUNCTION GET_CHINESE(P_NAME IN VARCHAR2) RETURN VARCHAR2 IS
 V_CODE        VARCHAR2(30000) := '';
 V_CHINESE     VARCHAR2(4000) := '';
 V_NON_CHINESE VARCHAR2(4000) := '';
 V_COMMA       PLS_INTEGER;
 V_CODE_Q      PLS_INTEGER;
 V_CODE_W      PLS_INTEGER;
BEGIN
 IF P_NAME IS NOT NULL THEN
  SELECT REPLACE(SUBSTRB(DUMP(P_NAME, 1010), INSTRB(DUMP(P_NAME, 1010), 'ZHS16GBK:')), 'ZHS16GBK: ', '') INTO V_CODE FROM DUAL WHERE ROWNUM = 1;
  FOR I IN 1 .. LENGTH(P_NAME) LOOP
   IF LENGTHB(SUBSTR(P_NAME, I, 1)) = 2 THEN
    V_COMMA  := INSTRB(V_CODE, ',');
    V_CODE_Q := TO_NUMBER(SUBSTRB(V_CODE, 1, V_COMMA - 1));
    V_CODE_W := TO_NUMBER(SUBSTRB(V_CODE, V_COMMA + 1, ABS(INSTRB(V_CODE, ',', 1, 2) - V_COMMA - 1)));
    IF V_CODE_Q >= 176 AND V_CODE_Q <= 247 AND V_CODE_W >= 161 AND V_CODE_W <= 254 THEN
     V_CHINESE := V_CHINESE || SUBSTR(P_NAME, I, 1);
    ELSE
     V_NON_CHINESE := V_NON_CHINESE || SUBSTR(P_NAME, I, 1);
    END IF;
    V_CODE := LTRIM(V_CODE, '1234567890');
    V_CODE := LTRIM(V_CODE, ',');
   END IF;
   V_CODE := LTRIM(V_CODE, '1234567890');
   V_CODE := LTRIM(V_CODE, ',');
  END LOOP;
  /*IF P_CHINESE = '1' THEN
            RETURN V_CHINESE;
        ELSE
            RETURN V_NON_CHINESE;
        END IF;*/
  IF LENGTH(V_CHINESE) > 0 THEN
   RETURN V_CHINESE;
  ELSIF LENGTH(V_NON_CHINESE) > 0 THEN
   RETURN V_NON_CHINESE;
  ELSE
   RETURN '';
  END IF;
 ELSE
  RETURN '';
 END IF;
END GET_CHINESE;

使用方法:SELECT /*+ parallel(a,10)*/ A.*, ROWID FROM   ABC_TABLE A where length(GET_CHINESE(logic_phone))>0

免责声明:文章转载自《oracle中过滤中文字符或者汉字的函数》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇CentOS7使用Alien将RPM从DE转换为DEB和DEB转换为RPM包Java连接Mysql由于版本更新报错下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

IOS中armv7,armv7s,arm64以及i386和x86_64讲解

一、前言问题在iOS开发过程中,估计比较少的人会在意armv7,armv7s,arm64这些概念,如果在意可能也是项目中出现了像下面的问题,才会想起来解决这些问题,但还是不是特别的理解,这些概念,今天写这篇博客,希望大家对这些概念有所了解。...

【解决】Failed to restart network.service: Unit network.service not found.

分析:原因其实也很简单,命令用错了,造成了找不到相应的网卡服务。...

python爬取图片遇见src乱码: data:image/png;base64

Python抓取图像并遇到src乱码:data:image/png;Base64会抓取您喜欢的图像,但图像的src在抓取的代码中出现了乱码:data:image/png;base64.)“”头1,编码=字符串。splitdata=b64decodedwithopenasf:f.写入。close()注意:我还没有成功。。。。。。...

ubuntu 常见安装软件错误

安装xlibs dev.2。错误:apt-get-installlibqt3-headers libqt3-mt-dev3。错误:这基本上意味着它要安装许多KDEspecificpackagestowork。这个'configure:aapt-get-installbuild essential7。错误:...

windows server2012 nVME和网卡等驱动和不识别RAID10问题

安装2012--不识别M.2nVME,下载官方驱动程序,并将其注入没有多个驱动程序的系统--添加ITSK通用驱动程序:|Win8012R2.x64网卡驱动程序无法打开--提取官方驱动程序EXE文件以添加网卡驱动程序不识别SATARAID10--超过2T,最大Legacy为2T。...

unity, 设置帧率上限

使用unity制作演示,并移除所有昂贵的特效。在真正的机器上运行仍然会导致问题。最大显示帧速率为30。默认情况下,IOS设备上统一的原始帧速率限制为30。应用targetFrameRate=60;更改为最大值60。请注意,此设置对编辑器没有影响。...