1
resposta

Função com Like

Olá, tenho uma coluna que o código está no meio do histórico, criei um substring para extrair o código, mas não estou conseguindo transformar em função, alguém pode ajudar?

Esse código está trazendo o que eu quero:

select SUBSTRING(historico, 3,7) as IDLAN, HISTORICO, VALORORIGINAL, VALORBAIXADO, DATABAIXA from FLAN where historico like '%152956%' and Year(DATABAIXA) = 2022

Quando tento fazer por meio de variável, também quero fazer uma função mas não da certo:

Declare @historico varchar(40)
Declare @ano as datetime
set @historico = '%152956%'
set @ano = '2022'


select SUBSTRING(historico, 3,7) as IDLAN, HISTORICO, VALORORIGINAL, VALORBAIXADO, DATABAIXA 
        from FLAN
        where historico =@historico
        and Year(DATABAIXA) = @ano
1 resposta

Oi, Joel, tudo bom?

Peço desculpas pela demora em te responder.

Você está no caminho certo! Agora, para que a sua função retorne o valor esperado, precisaremos substituir o sinal de igual ( = ), presente no WHERE, pela cláusula LIKE:

where historico LIKE @historico

Além disso, ao adicionar um valor à variável @ano, foram utilizadas aspas simples. Para que a função consiga reconhecer 2022 como uma data e compará-la ao ano de DATABAIXA, será necessário retirar essas aspas, deixando o SET dessa forma:

set @ano = 2022

Após essas mudanças, sua função ficará assim:

Declare @historico varchar(40)
Declare @ano as datetime
set @historico = '%152956%'
set @ano = 2022

select SUBSTRING(historico, 3,7) as IDLAN, HISTORICO, VALORORIGINAL, VALORBAIXADO, DATABAIXA 
        from FLAN
        where historico LIKE @historico
        and Year(DATABAIXA) = @ano

Espero ter ajudado, Joel! Contudo, vale ressaltar que como é um assunto externo aos cursos da Alura e que não tenho acesso ao cenário completo do projeto, outros testes terão de ser feitos a fim de obter o resultado esperado, mas espero que esta resposta seja um bom ponto de partida para a resolução do seu problema!

Um forte abraço.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!