Skip to main content
Announcements
Live today at 11 AM ET. Get your questions about Qlik Connect answered, or just listen in. 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!