Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
ricardoazevedo
New Contributor III

Usar Like IN do SQL no Qlikview

Meus caros, no SQL utilizo a função Like In ('xxx%','yyy%')

Como posso fazer no Qlikview? Tentei da seguinte forma:

If(CT1_CTFIN LIKE('3.4.2*','3.6.1*'), Dual('Opex',3))

Mas não deu certo.

Abraços

1 Solution

Accepted Solutions

Re: Usar Like IN do SQL no Qlikview

Eu gosto de utilizar as funções MATCH, MIXMATCH e WILDMATCH.

Para o seu exemplo é necessário WILDMATCH, pois ela é a única que aceita os caracteres curingas * e ?

Seria mais ou menos assim: if(WILDMATCH(CT1_CTFIN ,'3.4.2*','3.6.1*')>0,Dual('Opex',3))

8 Replies

Re: Usar Like IN do SQL no Qlikview

Eu gosto de utilizar as funções MATCH, MIXMATCH e WILDMATCH.

Para o seu exemplo é necessário WILDMATCH, pois ela é a única que aceita os caracteres curingas * e ?

Seria mais ou menos assim: if(WILDMATCH(CT1_CTFIN ,'3.4.2*','3.6.1*')>0,Dual('Opex',3))

diego_almeida
New Contributor

Re: Usar Like IN do SQL no Qlikview

Poderia usar as funções Right e Left.

if(Right(CT1_CTFIN , 4) = '3.4.2', Dual('Opex', 3))

Com certeza funciona como espera.

ricardoazevedo
New Contributor III

Re: Usar Like IN do SQL no Qlikview

Funcionou Yuri.

Poderia me explicar o conceito da função WILDMATCH?

Muito obrigado

Re: Usar Like IN do SQL no Qlikview

São funções que procuram por caracteres dentro de uma string informada.

MATCH = executa uma comparação que é sensível a maiúsculas

MIXMATCH = executa uma comparação que não diferencia maiúsculas de minúsculas

WILDMATCH = executa uma comparação que não diferencia maiúsculas de minúsculas e permite o uso

de caracteres curinga ( * e ?) nos caracteres de comparação

O retorno dessas funções é sempre um número, caso o valor a ser procurado seja encontrado, então será retornada a posição que esta procurando, por exemplo:

match( M, 'Jan','Fev','Mar')

Se M é Mar, então vai retornar 3

Por essa razão utilizei o ">0" = if(WILDMATCH(CT1_CTFIN ,'3.4.2*','3.6.1*')>0,Dual('Opex',3))

Ou seja, quero executar a função DUAL somente se ele encontrar alguns dos casos informados.

Caso eu queira negar, eu utilizo "=0" ou seja, executa somente se não encontrar nada.

ricardoazevedo
New Contributor III

Re: Usar Like IN do SQL no Qlikview

Fiz essa forma (estou criando grupo na dimensão):

If(CONTA LIKE '31101*', Dual('Receita Bruta',1),                                esta parte retornou corretamente

If(CONTA LIKE '32*', Dual('( - ) Deduções da Receita',2),                    esta parte retornou corretamente

If(WILDMATCH(CONTA ,'31101*','32*')>0,Dual('Receita Líquida',3),    esta parte não retornou nada

If(WILDMATCH(CT1_CTFIN ,'3.4.2*','3.6.1*','3.6.2*','3.6.3*')>0,Dual('Opex',4))))) esta parte retornou corretamente

Estranhei a terceira parte não retornar nada pois ela seria um resultado das duas primeiras partes.

Abraço

Re: Usar Like IN do SQL no Qlikview

Seu IF esta errado.

Lembre-se que o IF é estrutural

31101* vai parar no primeiro passo

32* vai parar no segundo passo

o terceiro passo nunca terá valor

ricardoazevedo
New Contributor III

Re: Usar Like IN do SQL no Qlikview

Mas é possível reestruturar de alguma forma ?

Re: Usar Like IN do SQL no Qlikview

Não, pois você quer dar dois resultados diferentes para o mesmo valor, teria que existir outras condições para dar certo.