如何在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是小数点后的最大位数。

http://www.tsqltutorials.com/datatypes.php具有所有数据types的描述。;

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个数字。 想一想就够了,这是你的工作。