Re: [oracle_br] Re: USO DO COMANDO IN (=ANY)

2009-07-31 Por tôpico Pablo Câmara
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]



Re: [oracle_br] Re: USO DO COMANDO IN (=ANY)

2009-07-31 Por tôpico Gustavo Venturini de Lima
Pablo, acho que tá confundindo alguma coisa...
Vc queria valores 1 ou/e 3 em qual campo???
Pq vc fez o teste só no VLR e tá parecendo que vc quer comparar o campo COD
tb...
Se for assim, é isso mesmo, mas vc TEM que explicitar o COD tb... Tipo:
SELECT COD,VLR FROM ARQ.TESTE
WHERE ((VLR LIKE '%1%' OR VLR LIKE '%3%')
  AND (COD LIKE '%1%' OR COD LIKE '%3%'));


2009/7/31 Pablo Câmara pscam...@gmail.com



 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 jlchiappa%40yahoo.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.broracle_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]

  



[As partes desta mensagem que não continham texto foram removidas]



Re: [oracle_br] Re: USO DO COMANDO IN (=ANY)

2009-07-31 Por tôpico Pablo Câmara
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...@yahoo.com.br



 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 pscam...@... 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 jlchia...@...

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



Re: [oracle_br] Re: USO DO COMANDO IN (=ANY)

2009-07-31 Por tôpico Milton Bastos
Pablo

Eu subentendi que vc quer
apenas os registros que tenham
COD = 1 e VLR = 3, é isso que vc quis dizer
com valores 1 e 3??

Se for, vc escreveu errado seu select:

1)
SELECT COD,VLR FROM ARQ.TESTE
WHERE VLR LIKE '%1%' AND VLR LIKE '%3%'
 No results.


Vc colocou o campo VLR DUAS vezes...
troque um dos VLR por COD.

Do jeito que vc escreveu nunca vai retornar NADA,
afinal, o mesmo campo (VLR) nunca vai ter AO MESMO TEMPO
dois valores diferentes (1 e 3).



 
 
---Original Message---
 
From: Pablo Câmara
Date: 31/7/2009 14:09:57
To: oracle_br@yahoogrupos.com.br
Subject: Re: [oracle_br] Re: USO DO COMANDO IN (=ANY)
 
  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]



 

[As partes desta mensagem que não continham texto foram removidas]



RE: [oracle_br] Re: USO DO COMANDO IN (=ANY)

2009-07-31 Por tôpico Flaviano, Wellington (GE Money)
Utiliza o exists, where exits coluna = 1 ... And exists coluna =3 ... Acredito 
que funciona... 



-Original Message-
From: oracle_br@yahoogrupos.com.br [mailto:oracle...@yahoogrupos.com.br] On 
Behalf Of Pablo Câmara
Sent: Friday, July 31, 2009 3:07 PM
To: oracle_br@yahoogrupos.com.br
Subject: Re: [oracle_br] Re: USO DO COMANDO IN (=ANY)

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...@yahoo.com.br



 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 pscam...@... 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 jlchia...@...

 
  
  
   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.broracle_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

Re: [oracle_br] Re: USO DO COMANDO IN (=ANY)

2009-07-31 Por tôpico Pablo Câmara
Flaviano, acho que é exatamente isso!
select distinct cod from teste t1
where exists (select * from teste t2 where t2.cod = t1.cod and   t2.vlr =
'3')
and   exists (select * from teste t2 where t2.cod = t1.cod and   t2.vlr =
'1')

Obrigado!



2009/7/31 Flaviano, Wellington (GE Money) wellington.flavi...@ge.com



 Utiliza o exists, where exits coluna = 1 ... And exists coluna =3 ...
 Acredito que funciona...

 -Original Message-
 From: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br[mailto:
 oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br] On Behalf
 Of Pablo Câmara
 Sent: Friday, July 31, 2009 3:07 PM
 To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br
 Subject: Re: [oracle_br] Re: USO DO COMANDO IN (=ANY)

 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...@yahoo.com.br jlchiappa%40yahoo.com.br

 
 
  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.broracle_br%
 40yahoogrupos.com.br,
  Pablo Câmara pscam...@... 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 jlchia...@...
 
  
   
   
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.broracle_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

Re: [oracle_br] Re: USO DO COMANDO IN (=ANY)

2009-07-31 Por tôpico Pablo Câmara
Valeu a todos!


2009/7/31 Pablo Câmara pscam...@gmail.com

 Flaviano, acho que é exatamente isso!
 select distinct cod from teste t1
 where exists (select * from teste t2 where t2.cod = t1.cod and   t2.vlr =
 '3')
 and   exists (select * from teste t2 where t2.cod = t1.cod and   t2.vlr =
 '1')

 Obrigado!



 2009/7/31 Flaviano, Wellington (GE Money) wellington.flavi...@ge.com



 Utiliza o exists, where exits coluna = 1 ... And exists coluna =3 ...
 Acredito que funciona...

 -Original Message-
 From: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br[mailto:
 oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br] On Behalf
 Of Pablo Câmara
 Sent: Friday, July 31, 2009 3:07 PM
 To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br
 Subject: Re: [oracle_br] Re: USO DO COMANDO IN (=ANY)

 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...@yahoo.com.br jlchiappa%40yahoo.com.br

 
 
  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.broracle_br%
 40yahoogrupos.com.br,
  Pablo Câmara pscam...@... 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 jlchia...@...
 
  
   
   
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.broracle_br%40yahoogrupos.com.br
oracle_br%40yahoogrupos.com.broracle_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

Re: [oracle_br] Re: USO DO COMANDO IN (=ANY)

2009-07-31 Por tôpico Pablo Câmara
Isso, com o exists funciona...

Mas só por curiosidad, como funcional o =ALL nesse caso?

Pablo





2009/7/31 jlchiappa jlchia...@yahoo.com.br



 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 oracle_br%40yahoogrupos.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.broracle_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.broracle_br%40yahoogrupos.com.broracle_br%
 40yahoogrupos.com.broracle_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