zoukankan      html  css  js  c++  java
  • oracle中过滤中文字符或者汉字的函数

    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

  • 相关阅读:
    SQL函数说明大全
    (火炬)MS SQL Server数据库案例教程
    SQL 数据库基础语句
    java 中length,length(),size()的区别
    关于webLogic启动问题
    dreamweaver读jsp时遇到的问题
    Microsoft 注册表编辑器 (regedit.exe)
    由正则表达式REGEXP_REPLACE开始
    Hello World
    Python基础目录
  • 原文地址:https://www.cnblogs.com/nizuimeiabc1/p/5422787.html
Copyright © 2011-2022 走看看