如何在SQL Server十进制列

时间:2016-12-17 07:07:38

标签: sql sql-server

我想在SQL Server 2014中的Dot(。)位置的Decimal(12,2)数据类型列中存储逗号(,),但无法实现此目的。

我需要以下行为: 当我在数据库表中保存十进制值2.56时,它会自动将此值存储为2,56

我应该在SQL Server中应用什么设置,以便它直接转换并将十进制Dot(。)保存到逗号(,)?

是否有任何SQL Server排序规则或区域设置设置以在十进制(12,2)数据类型列中保存逗号?

3 个答案:

答案 0 :(得分:3)

SQL Server将十进制值存储在内部二进制结构中,该结构不包含小数分隔符。用于显示数据的分隔符完全由客户端应用程序控制。因此,没有SQL Server设置来控制它。

虽然您可以使用T-SQL将十进制值转换为包含所需分隔符的字符串,但最佳做法是在表示层中执行此操作,在该表示层中您可以使用更强大的功能来支持客户端语言和区域设置。

答案 1 :(得分:0)

SQL语法使用Dot(。)作为小数分隔符。你不能改变它。

由于您的区域设置,您获得2,56。您的所有查询都应始终使用Dot(。)

答案 2 :(得分:0)

如果我理解正确,你不关心SQL存储什么。你想要的是在查询表时使用逗号而不是点。

如果是这样:假设您的列Average的数据类型为decimal

你可以这样做:

SELECT REPLACE(CAST(Average AS NVARCHAR), '.', ',')
FROM your_table