Thiago A. Colebrusco Postado Março 11, 2010 Denunciar Share Postado Março 11, 2010 Bom dia galera,Sou novo no fórum e estou com um problema para converter para o dinheiro brasileiro (R$).Preciso fazer um select que retorne o valor justamente como ele é no R$ (por exemplo: R$ 5.120.362,20)Trocar ponto por virgula é fácil. Só usar um replace.Mas pra colocar o ponto a cada três digitos está difícil.Alguém poderia me ajudar? Estou usando SQL Server 2005.Att,Thiago A. Colebrusco Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Março 11, 2010 Denunciar Share Postado Março 11, 2010 Bom dia Thiago, O Sql Server não possui nenhuma função para realizar esta formatação. Sendo assim, criei uma função para esta conversão. Como funciona: - você terá que passar o número para a função no formato: XXX ou XXX.X ou XXX.XX (número inteiro, com 1 ou 2 casas depois do ponto). - Se você colocar mais de 2 casas após o ponto, será suprimida as demais casas, deixando apenas 2. Vou aproveitar e colocar o script na parte de Tutoriais & Dicas - SQL Server :.) Segue o script para criação da função:create function ConverteMoedaReal (@Numero varchar(40)) Returns Varchar(40) -- Implementado por Fulvio Duarte -- MSN: daasabh@hotmail.com as Begin Declare @Contador int Declare @Pontos int Declare @CasasVirgula int Declare @Parte1 varchar(40) Declare @Parte2 varchar(40) set @CasasVirgula = (len(substring (@Numero, charindex('.', @Numero)+1, len (@Numero)))) if @CasasVirgula > 2 Set @Numero = (substring (@Numero, 1, (charindex('.', @Numero)) + 2) ) If charindex('.', @Numero) <> 0 Begin set @Numero = replace(@Numero, '.', ',') If len(substring(@Numero, charindex(',', @Numero)+1, 2)) = 1 Set @Numero = @Numero + '0' End Else Set @Numero = @Numero + ',00' Set @Contador = (charindex(',', @Numero)-1) Set @Pontos = @Contador/3 While @Pontos <> 0 Begin Set @Contador = @Contador-3 Set @Parte2 = (substring (@Numero, @Contador+1, len(@Numero))) Set @Parte1 = (substring (@Numero, 1, (charindex(@Parte2, @Numero)-1))) Set @Numero = @Parte1 + '.' + @Parte2 Set @Pontos = @Pontos - 1 End if (substring (@Numero, 1,1)) = '.' Set @Numero = (substring (@Numero, 2,len(@Numero))) Set @Numero = 'R$ ' + @Numero return @Numero end Para chamar a função: select dbo.ConverteMoedaReal ('5120362.20') Se você quiser utilzar, convertendo uma coluna: select dbo.ConverteMoedaReal (NomeColuna) from TABELA where .... Testa aí e vê se funciona. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Thiago A. Colebrusco Postado Março 12, 2010 Autor Denunciar Share Postado Março 12, 2010 Boa tarde!Muito obrigado, deu certinho. Deu um probleminha quando eu uso alguns formatos (como por exemplo, o número "12345" retorna apenas "R$ 12,00" ou o número "123." que retorna "R$ 123,").Pra corrigir isso, bastou usar a função com um convert para money:select dbo.ConverteMoedaReal (convert(money,'23213'))Muito obrigado mesmo.Att,Thiago A. Colebrusco Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Março 12, 2010 Denunciar Share Postado Março 12, 2010 Boa tarde Thiago, A implementação fiz bem básica. Agora é só inserir mais umas consistências e verificações, de acordo com as necessidades. Ah, e testar... rs. Que bom que funcionou!! Precisando estamos ai. :.) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Thiago A. Colebrusco Postado Março 12, 2010 Autor Denunciar Share Postado Março 12, 2010 Sim sim, está certo.O que você fez já foi de grande ajuda, vai servir perfeitamente para fazer o que preciso.Muito obrigado mesmo!Até mais,Thiago A. Colebrusco Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Thiago A. Colebrusco
Bom dia galera,
Sou novo no fórum e estou com um problema para converter para o dinheiro brasileiro (R$).
Preciso fazer um select que retorne o valor justamente como ele é no R$ (por exemplo: R$ 5.120.362,20)
Trocar ponto por virgula é fácil. Só usar um replace.
Mas pra colocar o ponto a cada três digitos está difícil.
Alguém poderia me ajudar? Estou usando SQL Server 2005.
Att,
Thiago A. Colebrusco
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.