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 <jlchia...@yahoo.com.br> > > > 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>, > Pablo Câmara <pscam...@...> 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]