SELECT COUNT(DISTINCT SEQ)
FROM tabela
WHERE (
( REGEXP_LIKE(DSC, 'gado','i')) AND
NOT REGEXP_LIKE(DSC, '[a-z0-9;]gado','i') AND
NOT REGEXP_LIKE(DSC, 'gado[a-z0-9;]','i'))
Consultar por determinada palavra
-
- Rank: Programador Júnior
- Mensagens: 15
- Registrado em: Ter, 01 Nov 2011 2:57 pm
"A falta de tempo é desculpa daqueles que perdem tempo por falta de método"
Albert Einstein
Albert Einstein
Senhores, estou tendo um pequeno problema de desempenho na consulta baixo:
Alguém tem uma sugestão para como realizar essa consulta, que tem como objetivo consultar uma determinada "palavra" que pode estar no começo, no fim ou no meio de uma "frase".
-
- Rank: Estagiário Sênior
- Mensagens: 9
- Registrado em: Qui, 15 Dez 2011 4:01 pm
Tente assim:
SELECT COUNT(DISTINCT SEQ)
FROM tabela
WHERE dsc like '%gado%'
-
- Rank: Programador Júnior
- Mensagens: 15
- Registrado em: Ter, 01 Nov 2011 2:57 pm
"A falta de tempo é desculpa daqueles que perdem tempo por falta de método"
Albert Einstein
Albert Einstein
Dessa maneira RafaelFantin vai retornar toda a string que possuir "gado" por exemplo "apagado", "obrigado"e isso não me interessa.
Mesmo assim vlw
Mesmo assim vlw
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Brother,
Se essa palavra (gado), levar espaços em branco do lado direito e, esquerdo, poderia tentar assim:
Veja se lhe ajuda, senão, posta pra gente.
Se essa palavra (gado), levar espaços em branco do lado direito e, esquerdo, poderia tentar assim:
with sl as (
select 'abcde gado 1 fghij' as nome
from dual
union
select 'defgh 2 apgagado ijklm' as nome
from dual
union
select 'nopqrs obrigado 3 tuvxyz' as nome from dual )
select count(distinct nome)
from sl
where sl.nome like '% gado %'
-
- Rank: Programador Júnior
- Mensagens: 15
- Registrado em: Ter, 01 Nov 2011 2:57 pm
"A falta de tempo é desculpa daqueles que perdem tempo por falta de método"
Albert Einstein
Albert Einstein
A palavra leva espaços ao lado se estiver no meio da frase por exemplo:
"José gosta de gado amarelo."
ou não tem espaço no começo:
"Gado bom é nelore."
ou não espaço no fim
"João gosta de gado."
E sim é problema de DESEMPENHO.
"José gosta de gado amarelo."
ou não tem espaço no começo:
"Gado bom é nelore."
ou não espaço no fim
"João gosta de gado."
E sim é problema de DESEMPENHO.
-
- Moderador
- Mensagens: 641
- Registrado em: Seg, 03 Set 2007 3:26 pm
- Localização: Fortaleza - CE
att,
Daniel N.N.
Daniel N.N.
Cara,
tenta como o seguinte:
OBS: um truquezim para sair de REG_EXP.
tenta como o seguinte:
SELECT COUNT(*)
FROM ( select 'abcde gado 1 fghij' as nome from dual
union
select 'defgh 2 apgagado ijklm' as nome from dual
union
select 'nopqrs obrigado 3 tuvxyz' as nome from dual
union
select 'gado 4 tuvxyz' as nome from dual
union
select 'gadogado 5 tuvxyz' as nome from dual
union
select 'nopqrs 5 gadogado' as nome from dual
union
select 'nopqrs 5 obri gado' as nome from dual )
WHERE ' ' || lower(NOME) || ' ' like '% gado %'
-
- Rank: Programador Júnior
- Mensagens: 15
- Registrado em: Ter, 01 Nov 2011 2:57 pm
"A falta de tempo é desculpa daqueles que perdem tempo por falta de método"
Albert Einstein
Albert Einstein
Massa Noctifero, para campo texto essa consulta é perfeita.
Mas tenho um probleminha , a consulta acima é realizada em campos CLOB que normalmente é um HTML, portanto não é só colocar um espaço...
Estou começando a pensar em desconsiderar o começo e fim de frases...
Mas tenho um probleminha , a consulta acima é realizada em campos CLOB que normalmente é um HTML, portanto não é só colocar um espaço...
Estou começando a pensar em desconsiderar o começo e fim de frases...
-
- Moderador
- Mensagens: 641
- Registrado em: Seg, 03 Set 2007 3:26 pm
- Localização: Fortaleza - CE
att,
Daniel N.N.
Daniel N.N.
Acredito que isso possa ajudar :
http://asktom.oracle.com/pls/asktom/f?p ... 7980988799
O problema é que pode deixar mais lento fazendo essa conversão, mas vale tentar.
http://asktom.oracle.com/pls/asktom/f?p ... 7980988799
O problema é que pode deixar mais lento fazendo essa conversão, mas vale tentar.
-
- Rank: Programador Júnior
- Mensagens: 15
- Registrado em: Ter, 01 Nov 2011 2:57 pm
"A falta de tempo é desculpa daqueles que perdem tempo por falta de método"
Albert Einstein
Albert Einstein
beleza, Noctifero vou dar uma olhada.
Por enquanto estou utilizando:
Se a palavra não estiver no começo nem no fim da frase eu encontro, a diferença de desempenho é estúpida a consulta anterior demorava 80 segundos essa demora de 7 a 10 segundos.
Obrigado a todos que contribuiram.
Por enquanto estou utilizando:
NVL(DBMS_LOB.INSTR(upper(dsc),' GADO '),0) != 0
Obrigado a todos que contribuiram.
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 8 visitantes