CONVERTER NUMERIC PARA MOEDA SQL SERVER
03/04/2020
0
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
Post mais votado
03/04/2020
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
Mais Posts
03/04/2020
Isaque
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' ".
03/04/2020
Isaque
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
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)"
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:
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:
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
02/02/2021
Romulo
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 ###
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
02/12/2021
Emerson Nascimento
DECLARE @VALOR FLOAT = 4512
SELECT FORMAT(@VALOR, 'C', 'pt-br') as total
qual o retorno?
Clique aqui para fazer login e interagir na Comunidade :)