CONVERTER NUMERIC PARA MOEDA SQL SERVER

03/04/2020

241

Galera estou montando um select que retorne o valores já em moeda, porém só consigo colocar a virgula nas casa decimais tem como substituir essa virgula pelo ponto?
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

Isaque

Responder

Post mais votado

03/04/2020

o resultado em moeda é um texto.
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

Emerson Nascimento
Responder

Mais Posts

03/04/2020

Isaque

o resultado em moeda é um texto.
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' ".
Responder

03/04/2020

Isaque

o resultado em moeda é um texto.
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
Responder

03/04/2020

Emerson Nascimento

qual versão do SQL Server você está utilizando?

Responder

03/04/2020

Isaque

qual versão do SQL Server você está utilizando?


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)"
Responder

03/04/2020

Emerson Nascimento

A função FORMAT() está disponível a partir do SQL Server 2012.
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

Responder

02/02/2021

Romulo

o resultado em moeda é um texto.
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 ###
Responder

01/12/2021

Caio

Buenas,

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
Responder

02/12/2021

Emerson Nascimento

tente isto (execute as duas linhas simultaneamente):

DECLARE @VALOR FLOAT = 4512
SELECT FORMAT(@VALOR, 'C', 'pt-br') as total

qual o retorno?

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários,
consulte nossa política de privacidade.

Aceitar