SQL Server 中 Currency 的数据类型是啥?

Posted

技术标签:

【中文标题】SQL Server 中 Currency 的数据类型是啥?【英文标题】:What is the data type for Currency in SQL Server?SQL Server 中 Currency 的数据类型是什么? 【发布时间】:2015-12-06 11:17:23 【问题描述】:

SQL Server 中货币值的数据类型是什么。

例如:我想存储$11.23

我可以使用货币类型,并且它还会存储$ 符号吗?

【问题讨论】:

任何numeric 数据类型都不会存储任何symbol 如果您放置符号,则必须解决很多问题才能计算该数量 Best data type for currency values 的可能重复项 Should you choose the MONEY or DECIMAL(x,y) datatypes in SQL Server?的可能重复 使用 money 没有意义,它不存储任何货币信息,范围有限,硬编码精度为 4。通常具有特定范围和精度的 decimal 是使用,例如decimal(9,2) 指定9 位数字,其中2 位是小数。 money 更多是为了与 VB6 和 OLEDB 兼容 【参考方案1】:
DECLARE @Price Decimal(18,2) = 11.23
SELECT FORMAT(@Price,'c','en-US') AS 'CURRENCY IN US Culture'

【讨论】:

【参考方案2】:

回答标题中的问题,货币的数据类型是MONEY

money 数据类型将仅存储信息,不存储格式:在您的示例中,信息是 11.23,所以这就是保存到数据库中的内容。

$ 符号是格式的一部分,因此不会存储到 money 字段中。

通常的解决方案是为金额设置一个 MONEY 字段,为货币符号/名称设置一个 VARCHAR 字段。

【讨论】:

money 没用,因为它存储任何货币信息。它只是一个精度低于decimal 的小数类型。它还不允许 允许您指定精度,例如,当值只允许有 2 位小数时。 21.3455 $ 是什么意思? @PanagiotisKanavos 这是您的意见,我的意见不同。如果您需要更改精度和比例,则使用其他数据类型,但如果 MONEY了解其规格)适合,那么与任何其他数据类型一样,它可能是一个有效的选择。【参考方案3】:

我认为存储货币的最佳方式是使用 NUMERICDECIMAL 数据类型,因为这些值参与计算。如果我们使用 NVARCHAR 来允许使用 ($) 等符号进行存储,则在 WHERE 子句中使用时会在计算过程中产生额外费用。 我们可以相应地选择精度和规模

【讨论】:

【参考方案4】:

在 SQL 中应该是 DECIMAL(,)NUMERIC。 例如DECIMAL(20,2)

【讨论】:

以上是关于SQL Server 中 Currency 的数据类型是啥?的主要内容,如果未能解决你的问题,请参考以下文章

在 SQL Server 中创建视图

sql server中是不是有可以将数字转换为单词的内置函数

带重置的 SQL Server Row_Count

在sql server 2005中,unique、foreign key、primry key约束,check

_itemmod_currency_like

SQL SUM 受限