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] >