- Este tópico contém 2 respostas, 3 vozes e foi atualizado pela última vez 16 anos, 4 meses atrás por
tiago_ps.
-
AutorPosts
-
5 de setembro de 2008 às 10:00 pm #82667
Gurgel
ParticipanteComo posso retirar o caracter especial ‘ de um campo VARCHAR utilizando o PL/SQL?
5 de setembro de 2008 às 10:20 pm #82669Ishii
ParticipanteOlá,
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
24 de outubro de 2009 às 4:36 am #90442tiago_ps
ParticipanteAproveitando 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; -
AutorPosts
- Você deve fazer login para responder a este tópico.