我正在尝试找出 SQL Server 中列的十进制数据类型。我需要能够存储 15.5、26.9、24.7、9.8 等值
我将
decimal(18, 0)
分配给列数据类型,但这不允许我存储这些值。
正确的做法是什么?
DECIMAL(18,0)
将允许小数点后 0 位。
使用像
DECIMAL(18,4)
这样的东西来代替应该就可以了!
这将为您提供总共 18 位数字,其中小数点后 4 位(小数点前 14 位)。
您应该使用如下:
DECIMAL(m,a)
m
是小数点可以有的总位数。
a
是小数点后可以保留的最大位数。
Decimal
的设置是其精度和小数位,或者用普通语言来说,一个数字可以有多少位,以及您希望小数点右边有多少位。
因此,如果您将
PI
放入 Decimal(18,0)
中,它将被记录为 3
?
如果将
PI
放入 Decimal(18,2)
中,它将被记录为 3.14
?
如果将
PI
放入 Decimal(18,10)
则记录为 3.1415926535
。
大多数时候,我使用decimal(9,2),它在sql十进制类型中占用最少的存储空间(5字节)。
精度=>存储字节
它可以存储从0到9 999 999.99(前面7位+小数点后面2位=总共9位),这对于大多数值来说已经足够了。
你可以试试这个
decimal(18,1)
数字长度总共为18位。小数点后的数字长度只能为1位,不能超过1位。
在 MySQL DB 中
decimal(4,2)
总共只允许输入 4 位数字。正如您在decimal(4,2)
中看到的,这意味着您总共可以输入4位数字,其中小数点后保留两位数字。
因此,如果您在 MySQL 数据库中输入 100.0,它将显示类似“列的值超出范围”的错误。
因此,您只能输入以下范围:从 00.00 到 99.99。
其他答案是正确的。假设您的示例反映了您想要的全部可能性,那就是
DECIMAL(3, 1)
。或者,DECIMAL(14, 1)
总共允许 14 位数字。你的工作就是思考什么就足够了。
request.input("name", sql.Decimal, 155.33) // decimal(18, 0)
request.input("name", sql.Decimal(10), 155.33) // decimal(10, 0)
request.input("name", sql.Decimal(10, 2), 155.33) // decimal(10, 2)