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 

>
>
> 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  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 
> >
> > >
> > >
> > > 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 
> > >  40yahoogrupos.com.br>,
> > > Pablo Câmara  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 
> > >
> > > >
> > > > >
> > > > >
> > > > > 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 40yahoogrupos.com.br> > > 40yahoogrupos.com.br>,
> > > > > Pablo Câmara  escreveu
> > > > > >
> > > > > > *paramentroDaTela := BABCOCK DIGIMAPAS TUBO*
> > > > >
> > > > > > *
> > > > > > *
> > > > > > *1) SELECT COD_DOCUMENTO FROM ARQ.REFERENCIAS_DOCUMENTOS WHERE
> > > > > TXT_DOCUMENTO
> > > > > > IN (paramentroDaTela)*
> > > > > > *
> > > > > > *
> > > > > > *No caso 1: vai retorna

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 

> 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) 
>
>
>>
>> Utiliza o exists, where exits coluna = 1 ... And exists coluna =3 ...
>> Acredito que funciona...
>>
>> -Original Message-
>> From: oracle_br@yahoogrupos.com.br [mailto:
>> oracle_br@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 >
>>
>> >
>> >
>> > 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 
>> > > 40yahoogrupos.com.br>,
>> > Pablo Câmara  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 
>> >
>> > >
>> > > >
>> > > >
>> > > > 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,
>>

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) 

>
>
> Utiliza o exists, where exits coluna = 1 ... And exists coluna =3 ...
> Acredito que funciona...
>
> -Original Message-
> From: oracle_br@yahoogrupos.com.br [mailto:
> oracle_br@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 >
>
> >
> >
> > 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 
> >  40yahoogrupos.com.br>,
> > Pablo Câmara  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 
> >
> > >
> > > >
> > > >
> > > > 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%'
>

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 

>
>
> 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 , 
> Pablo Câmara  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 
>
> >
> > >
> > >
> > > 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 
> > >  40yahoogrupos.com.br>,
> > > Pablo Câmara  escreveu
> > > >
> > > > *paramentroDaTela := BABCOCK DIGIMAPAS TUB

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 

>
>
> 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 ,
> Pablo Câmara  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 

>
>
> 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 ,
> Pablo Câmara  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 
>
> >
> > >
> > >
> > > 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 
> > >  40yahoogrupos.com.br>,
> > > Pablo Câmara  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 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 

>
>
> 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 >
>
>
> >
> >
> > 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 
> >  40yahoogrupos.com.br>,
> > Pablo Câmara  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
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 

>
>
> 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 ,
> Pablo Câmara  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]