Procurar texto em Campo Long

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
celsobtu
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 7
Registrado em: Qui, 23 Mar 2006 11:23 am
Localização: Botucatu - SP

Saudações !!!
Caros amigos, no PL/SQL através de um select preciso localizar uma determinada palavra em um campo do tipo LONG. Alguém sabe como posso fazer isso ?
Desde já agradeço atenção dispensada,
CelsoBtu
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Dá uma olhada na DBMS_LOB. Tem uma série de funções relacionadas a campos longos.

Selecionar tudo

SQL> DESC DBMS_LOB
celsobtu
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 7
Registrado em: Qui, 23 Mar 2006 11:23 am
Localização: Botucatu - SP

Olá Amigão, eu verifiquei um exemplo que está postado no tópico http://glufke.net/oracle/viewtopic.php?t=247 e quando realizo esse teste aqui na minha base apresenta o seguinte erro:

Selecionar tudo

select DBMS_LOB.SUBSTR (o.obs_st_observacao, 4000, 1) from vendas.ven_observacao o

"ORA-00997: illegal use of LONG datatype"
Desde já agradeço pela atenção dispensada.
CelsoBtu
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Hmm...talvez isso só funcione com CLOB. Tu disse que teu campo era LONG ?
celsobtu
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 7
Registrado em: Qui, 23 Mar 2006 11:23 am
Localização: Botucatu - SP

é .... acho que esta DBMS_LOB. não funcione com campos do tipo LONG ... você tem alguma outra idéia ???
Grato,
CelsoBtu
Avatar do usuário
Toad
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 253
Registrado em: Sex, 18 Nov 2005 2:14 pm
Localização: Seattle, WA
Contato:
Matheus Gonçalves
matheus.dev
twitter.com/developer__c

Não sei se pode te ajudar... mas
Fiz essa função pois precisava verificar dentro de um texto se uma parte dele se repetia.
Ficou tosco, dá para ser melhorado!
Dá uma olhada aí:

Selecionar tudo

FUNCTION repete(texto varchar2) RETURN boolean IS
tamanho number;
virgula number;
inicio number;
contador number;
pedaco varchar2(10);
fim number;
resposta boolean := false; 
BEGIN
  tamanho := length(texto);
  if tamanho > 0 then
    contador := 0;
    virgula := 0;
    inicio := 0;
    loop
     inicio := virgula + 1;
     contador := contador + 1;
     virgula :=  instr(texto,',',1,contador);
     fim := virgula-inicio;
     pedaco := substr(texto,inicio,fim);
     if instr(texto,pedaco,1,2) > 0 then
        resposta := true;
     end if; 
     if (virgula = tamanho) or (resposta = true) then
        exit;
     end if;
     end loop;       
   end if;
    return resposta;
END;
rmario36
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 7
Registrado em: Ter, 29 Jul 2008 10:48 am
Localização: São Paulo - SP
Olá Galera, bom dia.
Estou com problema e preciso de ajuda.
Preciso fazer a consultade uma palavra num campo do tipo "LONG" no Oracle 9i e me retorna uma msg de tabela não indexada.
Como resolver esse problema.
Valeu

Eu tb estou enfrentando esse problema e até agora não consegui uma maneira de fazer uma consulta na minha base.
você consegui alguma maneira de consultar uma tabela que possui um campo long e localizar determinada palavra?
obrigado
Rmario36
marcosvolpi
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Ter, 16 Dez 2008 4:13 pm
Localização: RS
Marcos Volpi
Analista/Programador
marcosvolpi@hotmail.com
http://www.oracle.com/

Galera,

Para contar quantas vezes um registro aparece no texto, uma maneira é esta:

Selecionar tudo

SELECT length('abracadabrasasasaswetretre') - length(replace('abracadabrasasasaswetretre','a'))
 FROM DUAL;
No Exemplo quero saber quantas vezes a letra "a" aparece no texto, o resultado será 8 vezes.

Abraço
Avatar do usuário
fsitja
Rank: OraSauro
Rank: OraSauro
Mensagens: 611
Registrado em: Seg, 19 Jan 2009 4:29 pm
Localização: Gaúcho no Rio de Janeiro - RJ
"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html

OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist

O Oracle 11g introduziu a função abaixo, que faz contagem de ocorrências de um padrão num string diretamente.

Selecionar tudo

SELECT REGEXP_COUNT('abracadabrasasasaswetretre', 'a', 1, 'i') REGEXP_COUNT
   FROM DUAL;
http://download.oracle.com/docs/cd/E118 ... ons145.htm

Abraço,
Francisco.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Bing [Bot], Google Adsense [Bot] e 27 visitantes