Colega, o exemplo que vc deu é TOTALMENTE diferente do que assumi no começo da 
thread : nesse que vc deu agora vc tem, EM REGISTROS DIFERENTES, colunas com o 
valor 3 e colunas com o valor 1 : tudo o que eu tinha dito é se os vários 
valores estivessem na ** MESMA ** ocorrencia da ** MESMA ** coluna no MESMO 
registro, sendo registros diferentes muda COMPLETAMENTE de figura, aí sim tente 
com algum tipo de sub-query, procvavelmente EXISTS...

 []s
 
  Chiappa
  
--- Em oracle_br@yahoogrupos.com.br, Pablo Câmara <pscam...@...> escreveu
>
> Gostaria que viesse o resultado: cod = 1 (apenas)
> Já que o cod 1 possui tanto o vlr 1 e o vlr 3
> 
> 
> 
> 
> 2009/7/31 jlchiappa <jlchia...@...>
> 
> >
> >
> > Não, colega, não : ** releia ** a minha msg, eu disse :
> >
> > coluna like p1 AND coluna like p2 AND coluna like p3
> >
> > é AND pra que obedeça a todas as condições, e não OR, yes ???
> >
> > []s
> >
> > Chiapa
> >
> > --- Em oracle_br@yahoogrupos.com.br <oracle_br%40yahoogrupos.com.br>,
> > Pablo Câmara <pscamara@> escreveu
> > >
> > > Chiappa,
> > > Valeu pela ajuda...mas não conseguí.
> > > A solução com : coluna LIKE '%param1%' AND coluna LIKE '%param2%' and
> > COLUNA
> > > like '%param3%'
> > > No meu caso não funcionou.
> > >
> > > No meu exemplo:
> > >
> > > CREATE TABLE arq.teste (cod NUMBER, vlr VARCHAR2(20))
> > >
> > > INSERT INTO TESTE (COD,VLR) VALUES (1,'1')/
> > > INSERT INTO TESTE (COD,VLR) VALUES (1,'2')/
> > > INSERT INTO TESTE (COD,VLR) VALUES (1,'3')/
> > > INSERT INTO TESTE (COD,VLR) VALUES (1,'4')/
> > > INSERT INTO TESTE (COD,VLR) VALUES (2,'3')/
> > > INSERT INTO TESTE (COD,VLR) VALUES (2,'4')/
> > >
> > > Pesquisar o documento que tenha as palavras *1 e 3.*
> > >
> > > 1)
> > > SELECT COD,VLR FROM ARQ.TESTE
> > > WHERE VLR LIKE '%1%' AND VLR LIKE '%3%'
> > > > No results.
> > >
> > > 2)
> > > SELECT COD,VLR FROM ARQ.TESTE
> > > WHERE VLR LIKE '%1%' OR VLR LIKE '%3%'
> > > >
> > > 1 1
> > > 1 3
> > > 2 3
> > >
> > > (Resultado igual ao IN)
> > >
> > > Queria algo que atendende apenas aqueles que tivessem o valor 1 e 3.
> > >
> > > Valeu, pela ajuda
> > > Vou tentar outra coisa aqui!
> > >
> > >
> > >
> > > 2009/7/31 jlchiappa <jlchiappa@>
> >
> > >
> > > >
> > > >
> > > > Colega, vamos por partes aí : primeiro de tudo, vamos entender : o
> > WHERE é
> > > > uma cláusula aplicada a CADA REGISTRO, um por vez, para filtragem, e o
> > > > operador ALL indica que a condição deve ser verdadeira para TODOS os
> > valores
> > > > - sabendo-se isso, uma condição
> > > >
> > > > WHERE coluna = ALL (x, y, z)
> > > >
> > > > evidentemente *** NUNCA *** vai ser verdadeira, pois um valor de uma
> > coluna
> > > > NUNCA vai ser igual aos três ao mesmo tempo, ok ??? Óbvio que vc obteve
> > "No
> > > > Results" na sua primeira tentativa... O que vc quer é pesquisar NÂO por
> > > > Igualdade, mas por presença, então esqueça o '=' , blz ? No banco 8i,
> > já que
> > > > vc não tem a REGEXPe iirc não tem Contexts também, as únicas opções pra
> > se
> > > > pesquisar por existência de uma substring dentro de outra são : o LIKE,
> > as
> > > > funções string tipo INSTR, escrita de uma função PL/SQL customizada sua
> > ou
> > > > alguma combinação complexa com Analytics (estes já existiam no 8i, só
> > não
> > > > lembro o release 8i exato em que foram introduzidos).
> > > > Para usar o LIKE ou funções built-in, isso VAI implicar em SQL
> > dinâmico,
> > > > imagino que vc terá que ter uma rotina sua, que recebe os parâmetros
> > > > digitados e os expande em vários LIKE, tipo :
> > > >
> > > > WHERE coluna LIKE '%param1%' AND coluna LIKE '%param2%' and COLUNA like
> > > > '%param3%'
> > > >
> > > > ou com built-ins se quiser, algo assim..
> > > >
> > > > A opção de função customizada sua seria algo que vc chamaria no WHERE,
> > tipo
> > > > :
> > > >
> > > > WHERE minha_função(coluna, paramdebusca1, paramdebusca2, paramde
> > busca3) =
> > > > 1 ...
> > > >
> > > > lógico, NENHUMA dessas alternativas vão ser extremamente saudável pra
> > > > performance, mas é isso... A menos danosa imagino que seria montar
> > alguma
> > > > combinação com Analytics, mas e algo a se pesquisar...
> > > >
> > > > []s
> > > >
> > > > Chiappa
> > > > --- Em oracle_br@yahoogrupos.com.br 
> > > > <oracle_br%40yahoogrupos.com.br><oracle_br%
> > 40yahoogrupos.com.br>,
> > > > Pablo Câmara <pscamara@> escreveu
> > > > >
> > > > > *paramentroDaTela := BABCOCK DIGIMAPAS TUBO*
> > > >
> > > > > *
> > > > > *
> > > > > *1) SELECT COD_DOCUMENTO FROM ARQ.REFERENCIAS_DOCUMENTOS WHERE
> > > > TXT_DOCUMENTO
> > > > > IN (paramentroDaTela)*
> > > > > *
> > > > > *
> > > > > *No caso 1: vai retornar o código de varios documentos. Sendo uma
> > tabela
> > > > > de 3 milhoes de registros. Fica inviável.*
> > > > > *
> > > > > *
> > > > > *2) SELECT COD_DOCUMENTO FROM ARQ.REFERENCIAS_DOCUMENTOS WHERE
> > > > TXT_DOCUMENTO
> > > > > =ALL (paramentroDaTela)*
> > > > > *
> > > > > *
> > > > > *No caso 2: Se o comando funcionasse, traria apenas o código do
> > > > documento,
> > > > > no qual todas as palavras passadas como paramentro fazem parte.*
> > > > > *
> > > > > *
> > > > > *Alguem tem alguma outra sugestão? PS: ORACLE 8I.*
> > > > > *
> > > > > *
> > > > > *Em outras versões do oracle (a partir do 9i) eu utilizo o
> > regexp_like.
> > > > Ou
> > > > > faço a busca por contexto.*
> > > > > *
> > > > > *
> > > > > *Pablo*
> > > > > *
> > > > > *
> > > > > *
> > > > > *
> > > > > *
> > > > > *
> > > > >
> > > > >
> > > > > [As partes desta mensagem que não continham texto foram removidas]
> > > > >
> > > >
> > > >
> > > >
> > >
> > >
> > > [As partes desta mensagem que não continham texto foram removidas]
> > >
> >
> >  
> >
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>


Responder a