显示逗号而不是点作为小数点分隔符
Show comma instead of point as decimal separator
我只是想在德国获得正确的数字格式,所以我需要将逗号显示为小数点分隔符而不是点。但是这...
DECLARE @euros money
SET @euros = 1025040.2365
SELECT CONVERT(varchar(30), @euros, 1)
显示 1,025,040.24
而不是 1.025.040,24
(或 1025040,24
)。在 C# 中,提供适当的 CultureInfo
很简单,但如何在 T-SQL?
中做到这一点
我真的需要使用 REPLACE
吗?但是即使,如何正确替换1,025,040.24
?
嗯,据我所知,没有特定于文化的转换选项可用。
所以你可以使用替换来完成(是的,它看起来有点丑...)
select
replace(replace(replace(convert(varchar(30), @euros, 1), ',', '|'), '.', ','), '|', '.')
思路:先把逗号改成什么东西,然后把点改成逗号,然后"something"变回点。
DECLARE @euros money
SET @euros = 1025040.2365
SELECT REPLACE(CONVERT(varchar(30), @euros, 0), '.', ',')
应该做(至少要得到1025040,24
)
您可以使用 replace
这样的东西:
DECLARE @euros money
SET @euros = 1025040.2365
SELECT REPLACE(REPLACE(CONVERT(varchar(30), @euros, 1),',',''),'.',',');
您可以先将千位分隔符逗号(,)替换为零长度字符串(''),然后您可以将小数('.')替换为逗号(',') select声明。
为了提供适当的文化信息,SQL 2012 年提供了 FORMAT()
功能。这是一个例子:
declare @f float = 123456.789;
select
[raw] = str(@f,20,3)
,[standard] = cast(format(@f, 'N', 'en-US') as varchar(20))
,[German] = cast(format(@f, 'N', 'de-DE') as varchar(20))
returns
raw |standard |German |
---------------------|-----------|-----------|
123456.789 |123,456.79 |123.456,79 |
您还可以在第二个参数中指定自定义格式字符串,其规则与 .NET 相同。
我只是想在德国获得正确的数字格式,所以我需要将逗号显示为小数点分隔符而不是点。但是这...
DECLARE @euros money
SET @euros = 1025040.2365
SELECT CONVERT(varchar(30), @euros, 1)
显示 1,025,040.24
而不是 1.025.040,24
(或 1025040,24
)。在 C# 中,提供适当的 CultureInfo
很简单,但如何在 T-SQL?
我真的需要使用 REPLACE
吗?但是即使,如何正确替换1,025,040.24
?
嗯,据我所知,没有特定于文化的转换选项可用。
所以你可以使用替换来完成(是的,它看起来有点丑...)
select
replace(replace(replace(convert(varchar(30), @euros, 1), ',', '|'), '.', ','), '|', '.')
思路:先把逗号改成什么东西,然后把点改成逗号,然后"something"变回点。
DECLARE @euros money
SET @euros = 1025040.2365
SELECT REPLACE(CONVERT(varchar(30), @euros, 0), '.', ',')
应该做(至少要得到1025040,24
)
您可以使用 replace
这样的东西:
DECLARE @euros money
SET @euros = 1025040.2365
SELECT REPLACE(REPLACE(CONVERT(varchar(30), @euros, 1),',',''),'.',',');
您可以先将千位分隔符逗号(,)替换为零长度字符串(''),然后您可以将小数('.')替换为逗号(',') select声明。
为了提供适当的文化信息,SQL 2012 年提供了 FORMAT()
功能。这是一个例子:
declare @f float = 123456.789;
select
[raw] = str(@f,20,3)
,[standard] = cast(format(@f, 'N', 'en-US') as varchar(20))
,[German] = cast(format(@f, 'N', 'de-DE') as varchar(20))
returns
raw |standard |German |
---------------------|-----------|-----------|
123456.789 |123,456.79 |123.456,79 |
您还可以在第二个参数中指定自定义格式字符串,其规则与 .NET 相同。