Pular para o conteúdo
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #82667
    Gurgel
    Participante

      Como posso retirar o caracter especial ‘ de um campo VARCHAR utilizando o PL/SQL?

      #82669
      Ishii
      Participante

        Olá,

        Utilize o replace ou translate ou ainda o instr

        Segue alguns exemplos:
        update table set column = replace (column, '''');

        ou

        create or replace function sRemoveCaracEspecial
        (pString varchar2)

        return string is

        vNum number(4);
        vStringAux varchar2(2000);

        vTamanho number(4);

        begin

        vNum := 1;
        --
        while vNum 0) then
        --
        select length (vStringAux)
        into vTamanho
        from dual;
        --
        -- Nao permite que a string possua dois espacos seguidos
        --
        if ((substr ( pString, vNum, 1 ) = ' ' and
        substr ( vStringAux, vTamanho, 1 ) != ' ')) or
        (instr ('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789',
        substr ( pString, vNum, 1 ) ) > 0) then
        --
        vStringAux := vStringAux || substr ( pString, vNum, 1 );
        --
        end if;
        --
        end if;
        --
        vNum := vNum + 1;
        --
        end loop;
        --
        return upper ( vStringAux );
        --
        end sRemoveCaracEspecial;

        []s Ishii

        #90442
        tiago_ps
        Participante

          Aproveitando a deixa do nosso amigo… esse dias precisava de um e resolvi criar …segue abaixo :

          create or replace function replace2(pTexto varchar2,
          pEntrada varchar2,
          pSaida varchar2,
          pCt varchar2 default ‘;’ )

          return varchar2 is
          vTexto varchar2(4000) := pTexto;
          vEntrada varchar2(4000) := pEntrada||pCt ;
          vTrata varchar2(4000) := pSaida||pCt;
          vQtde number(5) := to_number(to_char(round(length(regexp_replace(replace(vEntrada ,pCt/‘;’/,’1′),'([[:alpha:]])’))))) ;
          v1 pls_integer;
          vSub varchar2(10);
          vSub2 varchar2(10);
          vEnt varchar2(400);
          vEnt2 varchar2(400);
          vSaida varchar2(4000);
          vDel pls_integer;
          begin
          for rx in 1..vQtde loop
          v1 := 1;
          vSub := instr(vEntrada,pCt);
          vSub2 := instr(vTrata,pCt);
          vEnt := substr(vEntrada,v1,vSub-1);
          vEnt2 := substr(vTrata,v1,vSub2-1);

          select replace(vTexto,vEnt,vEnt2) into vSaida
          from dual;

          select to_number(to_char(round(length(regexp_replace(replace(replace(vTrata,pCt/‘;’/,”),vEnt2,’1′),'([[:alpha:]])’))))) into vDel
          from dual ;

          vTexto := vSaida ;
          vEntrada := replace(vEntrada,vEnt||pCt);
          if vDel <=1 then
          vTrata := replace(vTrata,vEnt2||pCt);
          end if;

          end loop;
          return(vSaida);
          exception
          when others then
          return (pTexto);
          end;

        Visualizando 3 posts - 1 até 3 (de 3 do total)
        • Você deve fazer login para responder a este tópico.