我正在尝试格式化1588000
之类的金额,如$1,588,000
。
我试过了:
CASE
WHEN nb.AmountDollars IS NOT NULL THEN
CAST(FORMAT(nb.AmountDollars, '##,##0') AS VARCHAR(50))
ELSE ''
END
但我收到错误:'FORMAT' is not a recognized built-in function name.
然而,我在使用FORMAT的stackoverflow人员中看到了许多答案。
感谢您的帮助
答案 0 :(得分:0)
这是一个快速而脏的标量函数,可以为你分割值。
CREATE FUNCTION [dbo].[fn_FormatDollars]
(
@RawValue INT
)
RETURNS VARCHAR(20)
AS
BEGIN
DECLARE @FormattedValue VARCHAR(20)
IF LEN(@RawValue) > 6
BEGIN
SELECT
@FormattedValue = '$' +
LEFT(CAST(@RawValue AS VARCHAR),1) + ',' +
SUBSTRING(CAST(@RawValue AS VARCHAR),2,3) + ',' +
RIGHT(CAST(@RawValue AS VARCHAR),3)
END
ELSE
BEGIN
SELECT
@FormattedValue ='$' +
SUBSTRING(CAST(@RawValue AS VARCHAR),1,3) + ',' +
RIGHT(CAST(@RawValue AS VARCHAR),3)
END
RETURN @FormattedValue
END
GO
然后在你的领域中使用它:
SELECT [dbo].[fn_FormatDollars](nb.[AmountDollars])
示例:强>
SELECT [dbo].[fn_FormatDollars](1588000)
<强>结果:强>
我在SQL 2005实例上写这个只是为了播放保存。