none
Ajuda com o Like RRS feed

  • Pergunta

  • Pessoal tenho um consultas q estou usando o like mais n está retornando nada:

    SELECT f.FaturaID,f.Descricao,L.Descricao   

    FROM Fatura F inner join FIN_LANCAMENTOSIMPLES L on  l.Descricao like '%'+f.Descricao+'%'

    Mais quando removo o f.descricao e coloco a descricao funciona.

    SELECT f.FaturaID,f.Descricao,L.Descricao   

    FROM Fatura F inner join FIN_LANCAMENTOSIMPLES L on  l.Descricao like '%BT ASSISTENCIA%'

     

    sexta-feira, 17 de dezembro de 2010 11:53

Respostas

  • Então, ou vc "converte" igualando os tipos de dados na estrutura da tabela, ou converte no Select.

    A função é RTRIM()

    • Sugerido como Resposta Cláudio Más sexta-feira, 17 de dezembro de 2010 17:48
    • Marcado como Resposta ricardo_david sexta-feira, 17 de dezembro de 2010 19:48
    sexta-feira, 17 de dezembro de 2010 17:46

Todas as Respostas

  • Ricardo,

    SELECT 
    	f.FaturaID,
    	f.Descricao,
    	L.Descricao
    FROM Fatura F 
    	inner join FIN_LANCAMENTOSIMPLES L 
    		on l.Descricao like '%'+f.Descricao+'%'
    		or f.Descricao like '%'+l.Descricao+'%'
    

    Teste com um or, e diga se retorna alguma coisa..., pra ter certeza que vc estah aplicando o like no campo certo.

    att.
    Rafael Melo

     

    sexta-feira, 17 de dezembro de 2010 12:45
  • Rafael, funciono em parte pq ele trouce os campos que são exatamente iguais como c eu n tivesse aplicado o LIKE
    sexta-feira, 17 de dezembro de 2010 12:55
  • Se o campo f.Descricao for sempre "maior" que l.Descricao, não deve retornar resultado mesmo.
    sexta-feira, 17 de dezembro de 2010 12:58
  • f.descricao será sempre maior, mais o objetivo do like n eh esse? Pegar uma string maior que contenha uma menor?
    sexta-feira, 17 de dezembro de 2010 13:04
  • Sim, mas na sua instrução vc está buscando l.Descricao que contenha f.Descricao.

    Se f.Descricao é maior que l.Descricao, l.Descricao nunca vai conter f.Descricao, e sim o inverso.

    Desculpe se não me faço entender, mas acho que vc precisa rever a instrução.

    sexta-feira, 17 de dezembro de 2010 15:07
  • Claudio, etendi mais acredito q isso n estejá acontecendo veja:

    l.descricao =Baixa boleto n° 9845725 - Taxa: RECUPERACAO DESCONTO - Coop: 098

    f.descricao= RECUPERACAO DESCONTO

    sexta-feira, 17 de dezembro de 2010 15:58
  • Então deveria ter retorno. Qual é o tipo de dados de l.descricao e f.descricao?
    sexta-feira, 17 de dezembro de 2010 16:26
  • VarChar(25) e VarChar(250)
    sexta-feira, 17 de dezembro de 2010 16:47
  • Sugiro igualar os tipos de dados como VarChar(250), se for possível.

    Antes, faz um teste após inserir um registro com o texto 'Taxa RECUPERACAO DESCONTO' no campo l.descricao.

    sexta-feira, 17 de dezembro de 2010 16:57
  • Rapaz Observei algo.

    F.descricao é varchar(25)

    Executei o seguinte select

    SELECT

          f.FaturaID,

          --f.Descricao,

          L.Descricao

    FROM Fatura F

          inner join FIN_LANCAMENTOSIMPLES L

                on l.Descricao like '%'+ CONVERT(nvarcher(20),f.Descricao) + '%'

    Quando converto f.descricao para 20 funciona mais quando faço sem converter não funciona. Fiz o seguinte:

    SELECT

     

    Descricao FROM Fatura F where FaturaID = 21

    Copiei o Resultado direto da grid que eh o seguinte :'RECUPERACAO DESCONTO     '

    Observe o espãço que fico!!! ele reserva os 25 caracteres por quando faço o select n está funcionando o sql está comparando os espaços em branco.

    Existe alguma função que "corta"esse final?

     

    sexta-feira, 17 de dezembro de 2010 17:39
  • Então, ou vc "converte" igualando os tipos de dados na estrutura da tabela, ou converte no Select.

    A função é RTRIM()

    • Sugerido como Resposta Cláudio Más sexta-feira, 17 de dezembro de 2010 17:48
    • Marcado como Resposta ricardo_david sexta-feira, 17 de dezembro de 2010 19:48
    sexta-feira, 17 de dezembro de 2010 17:46