Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
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'.

1 Solution

Accepted Solutions
nicolett_yuri

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.

View solution in original post

10 Replies
Anonymous
Not applicable
Author

O próprio Like:

Load * From Teste.qvd (qvd)

Where ColunaA Like ('*RET*');

Abs.

Not applicable
Author

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

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

Anonymous
Not applicable
Author

Tenta isso:

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

Abs:

cesaraccardi
Specialist
Specialist

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
Author

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

Anonymous
Not applicable
Author

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

nicolett_yuri

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
Author

Isso. Que não contenham RET

Not applicable
Author

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!