SQL数据类型DECIMAL 比如成绩表里SCORE DECIMAL(4,1) 这个字段代表啥意思啊

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL数据类型DECIMAL 比如成绩表里SCORE DECIMAL(4,1) 这个字段代表啥意思啊相关的知识,希望对你有一定的参考价值。

4是(有效位数:可储存的最大十进位数总数,小数点左右两侧都包括在内。有效位数必须是 1 至最大有效位数 38 之间的值。预设有效位数是 18。)
1是 (小数位数:小数点右侧所能储存的最大十进位数。小数位数必须是从 0 到 4 的值。只有在指定了有效位数时,才能指定小数位数。预设小数位数是 0;因此,0 <= 1 <= 4。最大储存体大小会随著有效位数而不同。)
参考技术A decimal 和 numeric
带定点精度和小数位数的 numeric 数据类型。

decimal[(p[, s])] 和 numeric[(p[, s])]

定点精度和小数位数。使用最大精度时,有效值从 - 10^38 +1 到 10^38 - 1。decimal 的 SQL-92 同义词是 dec 和 dec(p, s)。

p(精度)

指定小数点左边和右边可以存储的十进制数字的最大个数。精度必须是从 1 到最大精度之间的值。最大精度为 38。

s(小数位数)

指定小数点右边可以存储的十进制数字的最大个数。小数位数必须是从 0 到 p 之间的值。默认小数位数是 0,因而 0 <= s <= p。最大存储大小基于精度而变化

sql server 中何时使用 Money 数据或 Decimal 数据类型来存储成本值? [复制]

【中文标题】sql server 中何时使用 Money 数据或 Decimal 数据类型来存储成本值? [复制]【英文标题】:When to use Money data or Decimal Data type in sql server to store costing values? [duplicate] 【发布时间】:2014-04-16 02:17:31 【问题描述】:

存储成本计算值的首选数据类型是什么?金钱或小数 什么是程序化差异赌注? 用于货币数据类型的 asp.net 模型的 asp.net 数据注释?

【问题讨论】:

【参考方案1】:

您应该更喜欢decimal,因为money 数据类型不精确。

您也可以查看 Aaron Bertrand 的 Performance / Storage Comparisons : MONEY vs. DECIMAL

【讨论】:

“不精确”?请。它具有 4 个完整的小数位精度。说不精确是完全武断的,没有参考点,而且,呃,不精确。对于那些不需要在小数点后存储超过 4 位数字的用户,money 可以完全满足他们的需要。【参考方案2】:

Decimal 类型提供更高的精度来保存中间结果以获得您期望的结果。

money 数据类型的缺点:

    它是专有的,所以移植它很痛苦。它是几十年前的众多“Sybase 代码博物馆”功能之一。还记得 UNIX 的早期版本吗?

    当你不需要让说方言的人听起来像乡巴佬时,用方言编写代码。你最好使用 DECIMAL(s,p),这样你就可以使用适当大小的列。

    它确实在后端显示和格式化,带有逗号和美元符号。这违背了分层架构的目的。

    MONEY 数据类型存在舍入错误。

参考:msdn

【讨论】:

如果使用错误,即如果有人将money 乘以或除以money,它只会出现“舍入错误”,这当然是荒谬的。如果money 乘以/除以适当的类型,导致表达式提升为任意精度,则根本没有问题。

以上是关于SQL数据类型DECIMAL 比如成绩表里SCORE DECIMAL(4,1) 这个字段代表啥意思啊的主要内容,如果未能解决你的问题,请参考以下文章

c# sql server float

SQLServer中decimal 类型的问题

sql server查询问题。

sql,查询每门课程最高分的学生的学号,课程号,成绩。再一张表里

SQLserver数据库中,在啥情况下删除数据不能成功?

SQL查找一个表里,每个班级的最高分。