请问一下,如果查询数据库字段中信息包含中文字段的信息,例如:tt3中gg66这样的信息,有N条记录,汉字在字段中的位置不定;如果查询出来呀,查询出来再把汉字去掉,请问该怎么样写SQL或程序;或思想,谢谢

解决方案 »

  1.   

    给你写个函数create or replace function delete_chinese (v_char varchar2) return varchar2
    as
    v_return varchar2(100);
    temp varchar2(100):=null;
    begin
    for i in 1.. length(v_char) loop
    if ascii(substr(v_char,i,1))<=122 then
    temp:=temp||substr(v_char,i,1);
    end if;
    end loop;
    v_return:=temp;
    return v_return;
    end;
    update t set colname=delete_chinese(colname);
      

  2.   

    写一个function吧,
    对字段里的字符,使用函数asciistr()逐一进行判断,如果asciistr('你的字符') like '%\%'则给它忽略掉,最后返回一个新串.
      

  3.   

    要是单判断的话,用size,vsize这2个函数就OK了,要取汉字出来,用replace就替换也就OK了
      

  4.   

    select case when vsize(a) - length(a) > 0 then 'a有汉字'
    else 'a木有汉字'
    end a
      ,case when vsize(b) - length(b) > 0 then 'b有汉字'
       else 'b木有汉字'
       end b
      from 
      (
       select 'abcd汉字' a, 'haha, so good' b
         from dual
      )
      

  5.   

    测试了一下这个,也OKselect trim(translate(a, 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~!@#$%^&*()-_+=\|,./?><', ' ')) a
      ,trim(replace(b, 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~!@#$%^&*()-_+=\|,./?><', ' ')) b
      from 
      (
       select 'abcd汉字abc' a, 'haha, so good' b
         from dual
      );