如何在SQL中将int格式化为价格格式?

时间:2011-10-18 01:17:31

标签: sql-server-2008

我选择价格1000000,我需要将其格式化为$ 1,000,000。我怎么能在SQL中做到这一点?

5 个答案:

答案 0 :(得分:3)

要使用逗号格式化,您可以使用1样式declare @money money = 1000000 select '$' + convert(varchar, @money, 1)

$1,000,000.00

将生成select '$' + left(convert(varchar, @money, 1), charindex('.', convert(varchar, @money, 1)) - 1)

如果你想删除最后3个字符:

select '$' + left(convert(varchar, @money + $0.50, 1), charindex('.', convert(varchar, @money, 1)) - 1)

如果你想要舍入而不是截断:

{{1}}

答案 1 :(得分:1)

创建功能

CREATE FUNCTION [dbo].[f_FormatMoneyValue]
(
    @MoneyValue   money
)
RETURNS VARCHAR(50)
AS

BEGIN
    RETURN cast(@MoneyValue as numeric(36,2))
END

在选择查询中使用

Select dbo.f_FormatMoneyValue(isnull(SalesPrice,0))SalesPrice from SalesOrder

<强>输出:

100.00

使用“$”符号格式化货币值

CREATE FUNCTION [dbo].[f_FormatMoneyWithDollar]
(
    @MoneyValue  money
)
RETURNS VARCHAR(50)
AS

BEGIN
   RETURN '$' + convert(varchar, @MoneyValue, 1)
END

<强>输出:

$ 100.00

注意:以上示例适用于货币字段。您可以根据需要修改此功能 希望这可以帮助你......! :d

答案 2 :(得分:0)

SQL Server money数据类型只是十进制(10,4)。据我所知,没有数据类型可以呈现您想要的方式。

添加美元符号和逗号是应该属于应用程序逻辑的东西,但是如果你真的必须通过数据库对象来考虑,那么考虑添加美元符号和逗号每三个字符(小数点后)。换句话说,你必须将int转换为varchar并进行字符串操作。

答案 3 :(得分:0)

但是,这取决于标准SQL规范(SQL-92,SQL-2003等)中没有简单的方法。

对于PostgreSQL PL / pgSQL和Oracle PL / SQL,您可以使用to_char格式化数字:

select to_char(1234567.123, 'FM$999,999,999.99')

提供输出:

$1,234,567.12

请参阅:http://www.postgresql.org/docs/7/static/functions2976.htm

答案 4 :(得分:0)

SELECT FORMAT(price, 'C2', 'en-us')