VARCHAR2的字段,如何将混在记录中的数字或英文字母的记录查询出来?
比如:字段中某条记录为abc你def我ghi他xyz
         查询结果则为abcdefghixyz

解决方案 »

  1.   

    意思就是不要中文和其他的特殊符号,只查询出数字和英文字母是吗?
    试试下面的函数
    create or replace function p_return_string
    (
        istring                varchar2
    )return varchar2
    as
        v_strlen               number; --字符串长度
        v_string               varchar2(4000);
        v_char                 varchar2(10);
    begin
        v_strlen := length(istring);
        v_string := '';
        if (v_strlen = 0) then
            return v_string;
        end if;    for i in 1..v_strlen
        loop
            v_char := substr(istring, i, 1);
            if ((ascii(v_char) >=48 and ascii(v_char) <= 57)
             or (ascii(v_char) >=65 and ascii(v_char) <= 90)
             or (ascii(v_char) >=97 and ascii(v_char) <= 122))then            v_string := v_string || v_char;
            end if;
        end loop;
        return v_string;
    exception
        when others then
            v_string := substr(sqlerrm, 1, 200);
            return v_string;
    end p_return_string;
      

  2.   

    select regexp_replace('abc你def我ghi他xyz','[^a-z|A-Z|0-9]') from dual;