Fórum CONVERTER NUMERIC PARA MOEDA SQL SERVER #608909
03/04/2020
0
1 2 3 4 | SELECT CAST ( CONVERT ( VARCHAR , SUM ( CAST (A.SALDOVALOR AS MONEY) ),1) AS VARCHAR ) VALOR FROM AM_SALDOESTOQUE A WHERE CLIENTE NOT IN (10004,12058) |
Ele retorna os seguinte valores: 26,347,670.07
Gostaria que retorna-se assim: 26.347.670,07 - com pontos

Isaque
Curtir tópico
+ 0Post mais votado
03/04/2020
1 2 3 4 5 6 7 | SELECT A.SALDOVALOR, -- numerico FORMAT(A.SALDOVALOR, 'C' , 'pt-br' ) AS 'Formato Moeda' -- caracter FROM AM_SALDOESTOQUE A WHERE CLIENTE NOT IN (10004,12058) |
seguindo o exemplo que você passou, o resultado será
R$ 26.347.670,07
Emerson Nascimento

Gostei + 4
Mais Posts
03/04/2020
Isaque
1 2 3 4 5 6 7 | SELECT A.SALDOVALOR, -- numerico FORMAT(A.SALDOVALOR, 'C' , 'pt-br' ) AS 'Formato Moeda' -- caracter FROM AM_SALDOESTOQUE A WHERE CLIENTE NOT IN (10004,12058) |
seguindo o exemplo que você passou, o resultado será
R$ 26.347.670,07
Não funcionou esse código retorna a seguinte mensagem: "Could not find stored procedure 'FORMAT' ".
Gostei + 0
03/04/2020
Isaque
1 2 3 4 5 6 7 | SELECT A.SALDOVALOR, -- numerico FORMAT(A.SALDOVALOR, 'C' , 'pt-br' ) AS 'Formato Moeda' -- caracter FROM AM_SALDOESTOQUE A WHERE CLIENTE NOT IN (10004,12058) |
seguindo o exemplo que você passou, o resultado será
R$ 26.347.670,07
Não funcionou esse código retorna a seguinte mensagem: "Could not find stored procedure 'FORMAT' ".
DESCONSIDERE A RESPOSTA ANTERIOR .
O código retorna a seguinte mensagem: 'FORMAT' is not recognized built-in function name
Gostei + 0
03/04/2020
Emerson Nascimento
Gostei + 0
03/04/2020
Isaque
Estou utilizando a seguinte versão:
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64)
" Apr 2 2010 15:48:46 "
" Copyright (c) Microsoft Corporation"
" Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)"
Gostei + 0
03/04/2020
Emerson Nascimento
se você não puder atualizar o SQL Server, crie uma função para obter o resultado desejado.
Por exemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUNCTION dbo.FMTMOEDA ( -- Parâmetro que vai receber o valor @VLR NUMERIC (18,2) ) RETURNS VARCHAR (50) AS BEGIN -- Declaração das variáveis de apoio DECLARE @INTEIRO INT DECLARE @FRACAO INT DECLARE @STRINTEIRO VARCHAR (50) DECLARE @STRFRACAO VARCHAR (50) DECLARE @STRRESULT VARCHAR (50) -- Obtém a parte inteira e a parte decimal do valor passado SET @INTEIRO = ROUND(@VLR,2) SET @FRACAO = ((ROUND(@VLR,2) - (@INTEIRO / 1.000)) * 100) -- Transforma os valores obtidos em caractere SET @STRINTEIRO = LTRIM(RTRIM( CAST (@INTEIRO AS VARCHAR (50)))) SET @STRFRACAO = RIGHT ( '0' +LTRIM(RTRIM( CAST (@FRACAO AS VARCHAR (50)))),2) -- Separa a string de 3 em 3 para montar o texto formatado SET @STRRESULT = '' WHILE LEN(@STRINTEIRO) > 0 BEGIN IF LEN(@STRINTEIRO) > 3 BEGIN SET @STRRESULT = RIGHT (@STRINTEIRO,3) + '.' + @STRRESULT SET @STRINTEIRO = LEFT (@STRINTEIRO,LEN(@STRINTEIRO)-3) END ELSE BEGIN SET @STRRESULT = @STRINTEIRO + '.' + @STRRESULT SET @STRINTEIRO = '' END ; END ; -- Retorna a texto final, concatenando a parte inteira à parte decimal RETURN REPLACE (@STRRESULT + ',' + @STRFRACAO, '.,' , ',' ) END GO |
Para usar:
1 2 3 4 5 6 | SELECT dbo.FMTMOEDA(2986566) SELECT dbo.FMTMOEDA(365901.06) SELECT dbo.FMTMOEDA(0) SELECT dbo.FMTMOEDA(1.4) SELECT dbo.FMTMOEDA(1.04) SELECT dbo.FMTMOEDA(P.VALOR) FROM PEDIDO P |
Gostei + 0
02/02/2021
Romulo
1 2 3 4 5 6 7 | SELECT A.SALDOVALOR, -- numerico FORMAT(A.SALDOVALOR, 'C' , 'pt-br' ) AS 'Formato Moeda' -- caracter FROM AM_SALDOESTOQUE A WHERE CLIENTE NOT IN (10004,12058) |
seguindo o exemplo que você passou, o resultado será
R$ 26.347.670,07
*** TU É UM GÊNIO ***
### OBRIGADO ###
Gostei + 0
01/12/2021
Caio
Estou tentando formatar o valor no padrão brasileiro, entretanto não está retornando corretamente.
FORMAT(ctr.valor_total, 'C', 'pt-br') as total
Original: 4512
Retorno: 4,512
Alguém conseguiria auxiliar?
Não tenho muito conhecimento de SQL Server.
Tks,
Caio
Gostei + 0
02/12/2021
Emerson Nascimento
DECLARE @VALOR FLOAT = 4512
SELECT FORMAT(@VALOR, 'C', 'pt-br') as total
qual o retorno?
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)