10 Replies Latest reply: Apr 18, 2016 1:51 PM by Douglas Cioffi RSS

    Função 'Like' SQL

    Leonardo Nunes

      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'.

        • Re: Função 'Like' SQL
          Egnaldo de Sousa

          O próprio Like:

           

          Load * From Teste.qvd (qvd)

          Where ColunaA Like ('*RET*');

           

           

          Abs.

          • Re: Função 'Like' SQL
            Yuri Nicolett

            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.

            • Re: Função 'Like' SQL
              Douglas Cioffi

              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!

                • Re: Função 'Like' SQL
                  Douglas Cioffi

                  Para registrar, consegui encontrar uma forma.

                   

                  Expressão completa:

                   

                  if(left(TRIM(GetFieldSelections(AnoMes_Vigência)),3)='NOT' AND (SubStringCount(GetFieldSelections(AnoMes_Vigência),(YEAR(TODAY())& num((month(today())-1),'00'))))=1,0,

                  if(left(TRIM(GetFieldSelections(AnoMes_Vigência)),3)='NOT' AND (SubStringCount(GetFieldSelections(AnoMes_Vigência),(YEAR(TODAY())& num((month(today())-1),'00'))))=0,1,

                  (SubStringCount(GetFieldSelections(AnoMes_Vigência),(YEAR(TODAY())& num((month(today())-1),'00'))))))

                   

                  Obrigado!