sql-server - 显示逗号而不是点作为小数分隔符

标签 sql-server tsql sql-server-2005 type-conversion currency

我只是想在德国获得正确的数字格式,所以我需要将逗号显示为小数分隔符而不是点。但这...

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

最佳答案

为了提供适当的区域性信息,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))

返回

raw                  |standard   |German     |
---------------------|-----------|-----------|
          123456.789 |123,456.79 |123.456,79 |

您还可以在第二个参数中指定自定义格式字符串,其规则与 .NET 相同。

文档:https://msdn.microsoft.com/en-US/library/hh213505.aspx

关于sql-server - 显示逗号而不是点作为小数分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31611221/

相关文章:

sql - 如何获取新插入或已经存在的记录的标识值?

c# - 使用 Entity Framework 更新时获取输出 'inserted'

SQL 合并行 - 字符串数据类型

sql - 在 SQL/数据库级别计算夏令时 (DST)

sql-server - 检查在 SQL Server 上运行了哪些 'DROP' 查询

.net - 为什么此查询返回的记录集的状态为 "closed"?

sql-server-2005 - 更改表添加多列ms sql

sql-server - 我可以在 2 个字段上创建唯一约束并在 bool 字段上创建条件吗

sql-server - 同一服务器上的 Azure SQL 数据库会相互影响性能

SQL Server SELECT 到 JSON 函数