如何在SQL Server中存储小数值?
我试图找出在SQL Server中的列的十进制数据types。 我需要能够存储15.5,26.9,24.7,9.8等值
我将decimal(18, 0)
赋给列数据types,但是这不允许我存储这些值。
什么是正确的方法来做到这一点?
DECIMAL(18,0)
将允许小数点后的0位数。
使用像DECIMAL(18,4)
而不应该做的很好!
这给你总共18位数 ,其中4位小数点后(小数点前14位)。
你应该使用如下:
DECIMAL(m,a)
m
是你的小数可以有的总数字的数量。
a
是小数点后的最大位数。
Decimal
的设置是它的精度和标度或者正常的语言,一个数字有多less个数字,你想要在小数点右边有多less个数字。
所以如果你把PI
放入Decimal(18,0)
它会被logging为3
?
如果将PI
放入Decimal(18,2)
,则会logging为3.14
?
如果将PI
分解为Decimal(18,10)
则logging为3.1415926535
。
在大多数情况下,我使用十进制(9,2),其中最小的存储(5字节)在SQL十进制types。
精度=>存储字节
- 1 – 9 => 5
- 10-19 => 9
- 20-28 => 13
- 29-38 => 17
它可以存储从0到9 999 999.99(小数点后面的7位数字=总共9位数字),这对大多数数值来说足够大。
在MySQL DB中, decimal(4,2)
只允许input总共4位数。 正如您在decimal(4,2)
看到的,这意味着您可以input总共4位数字,其中两位数字用于保留小数点后面的数字。
所以,如果你在MySQL数据库中input100.0,它将显示一个错误,如“超出列的范围值”。
所以,你只能在这个范围内input:从00.00到99.99。
其他答案是正确的。 假设你的例子反映了你想要的全部范围是DECIMAL(3, 1)
。 或者, DECIMAL(14, 1)
将允许总共14个数字。 想一想就够了,这是你的工作。