create FUNCTION FormataValor(@Valor Decimal(18,4),@SepMilhar char(1),@SepDecimal Char(1)) Returns Varchar(50) AS Begin Declare @Inteiro int, @Texto varchar(50), @ValorDecimal varchar(04) Set @Texto = RTrim(Cast(@Valor as varchar(50))) Set @Inteiro = Cast(@Valor as Integer) Set @ValorDecimal = SubString(@Texto,Len(@Texto)-3,4) If Len(@Inteiro) = 4 Set @Texto = SubString(Cast(@Inteiro as varchar(10)),1,1) + @SepMilhar + SubString(Cast(@Inteiro as varchar(10)),2,3) + @SepDecimal + @ValorDecimal If Len(@Inteiro) = 5 Set @Texto = SubString(Cast(@Inteiro as varchar(10)),1,2) + @SepMilhar + SubString(Cast(@Inteiro as varchar(10)),2,3) + @SepDecimal + @ValorDecimal If Len(@Inteiro) = 6 Set @Texto = SubString(Cast(@Inteiro as varchar(10)),1,3) + @SepMilhar + SubString(Cast(@Inteiro as varchar(10)),2,3) + @SepDecimal + @ValorDecimal Return @Texto End
Para utlizá-la:
SELECT dbo.FormataValor(2560.69,'.',',')
OBS: sempre utilizar o . (ponto) como separador de decimal.
Espero que possa ser útil a alguém.
Fonte/Autor/link
AUTOR: Adaptei esta função de um post do forum imasters (do qual não tenho o link). Caso alguém seja o autor favor postar o link para que os créditos possam ser atribuido.
Dúvidas, criticas, contribuições, correções e adições serão bem vindas.

Este tópico está fechado


