在一个字符串里所不是汉字的字符全去掉,怎么弄!!!!急!!

解决方案 »

  1.   

    CREATE OR REPLACE FUNCTION TRIM_CHARS (theStr IN VARCHAR2) RETURN VARCHAR2
    IS
      rtVal VARCHAR2(4000);
      CURR_CHAR VARCHAR2(2);
      STR VARCHAR2(4000);
    BEGIN
    rtVal:=''; STR:=theStr; IF STR IS NOT NULL THEN
    FOR i IN 1..LENGTH(STR) LOOP
    CURR_CHAR:=SUBSTR(STR,i,1);
    IF LENGTHB(CURR_CHAR)=2 THEN
    rtVal:=rtVal || CURR_CHAR;
    END IF;
    END LOOP;
    END IF;  RETURN rtVal;
    EXCEPTION
    WHEN OTHERS THEN RETURN NULL;
    END;
    /
      

  2.   

    注意,我提供的函数中用 LENGTHB(CURR_CHAR)=2 来判定汉字,表示汉字是两个字节。如果你使用的字符集中汉字不是两个字节,比如UTF-8就是三个字节,那就改成3
      

  3.   

    用ascii函数也可以,如果ascii(str)>255,表示汉字
      

  4.   

    ......
    ascii(str)>255可不是都表示汉字
      

  5.   

    这跟数据库的字符集有关的吧,如果字符集是us7ascii,
    LENGTHB('。')=LENGTH('。')=2