ORACLE中如何去除不可见字符(非空格、回车等)

 时间:2026-02-17 03:12:35

1、首先确定出错数据含有的不可见字符。

可以使用dump函数查看:

SELECT dump('') FROM dual;

DUMP('')

---------------------

Typ=96 Len=2: 253,210

2、编写函数,将第一步查询出的编码前缀加入到函数中:

create or replace function FUN_REPLACE_SPACE(p_text varchar2)

  return varchar2 is

  v_length  int;

  v_lengthb int;

  v_dump    varchar2(4000);

  v_substr  varchar2(4000);

  i         int;

  v_result  varchar2(4000);

begin

  v_length  := 0;

  v_lengthb := 0;

  i         := 1;

  v_substr  := '';

  v_dump    := '';

  v_result  := '';

  select length(p_text), lengthb(p_text)

    into v_length, v_lengthb

    from dual;

  while i <= v_length loop

    v_substr := substr(p_text, i, 1);

    select dump(v_substr) into v_dump from dual;

    if v_dump like '%170,___' then

      v_substr := '';

    end if;

    if v_dump like '%171,___' then

      v_substr := '';

    end if;

    if v_dump like '%248,___' then

      v_substr := '';

    end if;

    if v_dump like '%249,___' then

      v_substr := '';

    end if;

    if v_dump like '%250,___' then

      v_substr := '';

    end if;

    if v_dump like '%251,___' then

      v_substr := '';

    end if;

    if v_dump like '%252,___' then

      v_substr := '';

    end if;

    if v_dump like '%253,___' then

      v_substr := '';

    end if;

    v_result := v_result || v_substr;

    i        := i + 1;

  end loop;

  return v_result;

exception

  when others then

    return '';

end;

3、验证处理后结果:

SELECT dump('你好啊'),fun_replace_space('你好啊') FROM dual;

DUMP('你好啊')                              FUN_REPLACE_SPACE('你好啊')

--------------------------------------------- --------------------------------------------------------------------------------

Typ=96 Len=8: 196,227,186,195,253,210,176,161 你好啊

  • chrome清理缓存
  • ie浏览器清除缓存怎么操作
  • 教你如何防范永恒之蓝(WannaCry)病毒的方法
  • Excel如何用VBA替换字符串?
  • oracle数据源ODBC的配置
  • 热门搜索
    南京周边旅游 西沙旅游 章丘旅游 广西北海旅游攻略 去巴基斯坦旅游 康辉旅游线路报价 淮安旅游 蚌埠旅游 上海旅游局 武汉周边旅游景点