Sql server 2008 如何在sql server 2008中格式化货币?

Sql server 2008 如何在sql server 2008中格式化货币?,sql-server-2008,tsql,currency,Sql Server 2008,Tsql,Currency,表中的数据为11285000美元。 我需要把它做成1.128,50的格式 逗号前每3位要加一个点。您可以在T-SQL中这样做,但它很难看: select REPLACE(REPLACE(REPLACE( CONVERT(varchar(20), CONVERT(money,1128.5000), --If you already have money you don't need this bit 1) --x,xxx.xx ,'.','?') ,',

表中的数据为11285000美元。

我需要把它做成1.128,50的格式


逗号前每3位要加一个点。

您可以在T-SQL中这样做,但它很难看:

select REPLACE(REPLACE(REPLACE(
    CONVERT(varchar(20),
    CONVERT(money,1128.5000), --If you already have money you don't need this bit
    1) --x,xxx.xx
    ,'.','?')
    ,',','.')
    ,'?',',')
结果:

1.128,50
试试这个,我从你那儿借的


您的SQL实例是什么区域性的,您希望在哪个区域性中显示它?我这样问是因为对我来说,一个典型的货币格式是1128.50英镑。为什么在查询数据时需要格式化数据?将格式设置留给将显示数据的应用程序。不幸的是,2008年支持的唯一内置格式始终使用
作为千位分隔符,
作为十进制分隔符,无论采用何种语言设置。几乎可以肯定的是,在T-SQL之外的另一个级别上进行这种格式化会更容易,正如Pred所建议的那样。好吧,如果T-SQL中的格式很难看,那么如何使用c-sharp或javascript实现呢?你能帮忙吗?@ds.zo-如果你有它,比如说,一个
decimal
,并且你所要求的反映了你当前的文化,那么它就是(在C#中,假设
d
decimal
d.ToString(“N”)
。如果它不反映您当前的文化,一种方法是
d.ToString(“N”,new NumberFormatInfo{NumberDecimalDigits=2,NumberDecimalSeparator=“,”,NumberGroupSeparator=“.”,NumberGroupSizes=new[]{3})看起来很长,但至少清楚您正在做什么,而不是上面的SQL代码。
declare @price as nvarchar(50)
declare @money varchar(50)
declare @pos int

set @price='1128,5000'
set @money = convert(varchar(50), CAST(@price AS money), 1)
declare @SAS NVARCHAR(50)
set @SAS=convert(varchar(20), CAST(@price AS money),1)
set stuff((sTUFF(@SAS,(len(@SAS) - (LEN(@SAS)-2)),1,'.'))  ,CHARINDEX(',', @SAS),1,'')