Qlik Community

Qlik Brasil

Welcome to the group for Brazil users. .All discussions will be in Portuguese.

Not applicable

Função 'Like' SQL

Srs, bom dia!

Qual a função no Qlik view que se assemelha a função Like do sql server?

Quero trazer registros que contenham no meio o texto 'RET'.

Tags (1)
1 Solution

Accepted Solutions

Re: Função 'Like' SQL

Conforme respondido pelo Cesar Accardi, a função que faz a mesma tratativa que o LIKE é a WILDMATCH

Exemplo de utilização:

Retornar somente as palavras que contém "RET" em qualquer posição do texto

if( WILDMATCH( COLUNA, '*RET*')>0, COLUNA)

Lembrando que a função WILDMATCH não é sensível a caracteres maiúsculos e minúsculos, desta forma tanto faz '*RET*' ou '*ret*' ou '*rEt*' etc.

Caso você deseja negar o like, basta utiliza o "=0" , por exemplo:

if( WILDMATCH( COLUNA, '*RET*')=0, COLUNA)

Vale a pena dar uma olhada nesta função e também nas funções que se assemelham como por exemplo: MATCH e MIXMATCH.

10 Replies
egnaldo_sousa
Contributor II

Re: Função 'Like' SQL

O próprio Like:

Load * From Teste.qvd (qvd)

Where ColunaA Like ('*RET*');

Abs.

Not applicable

Re: Função 'Like' SQL

Egnaldo, obrigado pela resposta. Acho que me expressei mal.

No caso o Like seria na criação de uma dimensão.

egnaldo_sousa
Contributor II

Re: Função 'Like' SQL

Tenta isso:

=Aggr(Only({<ColunaA = {'*RET*'}>} ColunaA),ColunaA)

Abs:

Highlighted
cesaraccardi
Valued Contributor

Re: Função 'Like' SQL

Ola Leonardo,

Se caso tiver problemas de performance com o uso do Aggr que o Egnaldo sugeriu voce pode tentar tambem adicionar o set analysis "{<ColunaA = {'*RET*'}>}" nas suas expressoes ao invez de adicionar a dimensao ou ainda escrever a dimensao dessa forma: if(WildMatch(ColunaA,'*RET*',ColunaA).

Abracos,

Cesar

Not applicable

Re: Função 'Like' SQL

Egnaldo, fucionou direitinho, porém fui criar um filtro para trazer tudo o que não contem RET a função não funcionou.

egnaldo_sousa
Contributor II

Re: Função 'Like' SQL

Só para eu entender, você precisa de selecionar tudo que não contem RET, é isso?

Exemplo:

> Contém RET

> Não contém RET

Abs

Re: Função 'Like' SQL

Conforme respondido pelo Cesar Accardi, a função que faz a mesma tratativa que o LIKE é a WILDMATCH

Exemplo de utilização:

Retornar somente as palavras que contém "RET" em qualquer posição do texto

if( WILDMATCH( COLUNA, '*RET*')>0, COLUNA)

Lembrando que a função WILDMATCH não é sensível a caracteres maiúsculos e minúsculos, desta forma tanto faz '*RET*' ou '*ret*' ou '*rEt*' etc.

Caso você deseja negar o like, basta utiliza o "=0" , por exemplo:

if( WILDMATCH( COLUNA, '*RET*')=0, COLUNA)

Vale a pena dar uma olhada nesta função e também nas funções que se assemelham como por exemplo: MATCH e MIXMATCH.

Not applicable

Re: Função 'Like' SQL

Isso. Que não contenham RET

Not applicable

Re: Função 'Like' SQL

Bom dia, pessoal!

Vou aproveitar este mesmo tópico para tirar uma dúvida:

Eu preciso avaliar um determinado filtro da seguinte maneira:

se o campo AnoMes_Vigencia estiver filtrado e dentro dos itens selecionados estiver o valor correspondente ao mês imediatamente anterior ao mês corrente, então eu continuarei depois com a sequencia da minha expressão.

A identificação do mês eu consegui através da função: (YEAR(TODAY())& num((month(today())-1),'00')) -> pois meu campo AnoMes_Vigencia está preenchido com 201601, 201602, 201603 e assim por diante.

Usando a expressão: if((GetFieldSelections(AnoMes_Vigência) like '201603') = 0, 'Não','Sim'), eu consigo avaliar apenas quando o filtro possui somente o valor 201603. Se eu filtrar, por exemplo, 201602 E 201603, a função retorna 'Não' - eu gostaria que retornasse sim, pois 201603 está contido no filtro.

Além disso, eu precisaria que fosse algo dinâmico, que atualizasse automaticamente conforme os meses vão caminhando. Estou tentando executar a função abaixo, porém sem sucesso:

if((GetFieldSelections(AnoMes_Vigência) like (trim((YEAR(TODAY())& num((month(today())-1),'00'))))) = 0, 'Não','Sim')

Apenas para confirmar, eu não consigo usar like com uma expressão? Precisa ser necessariamente um valor determinado?

Muito Obrigado!