我试图在SQL Server中找出一列的十进制数据类型。我需要能够存储像15.5,26.9,24.7,9.8等值

我将decimal(18,0)赋值给列数据类型,但这不允许我存储这些值。

正确的做法是什么?


当前回答

DECIMAL(18,0)允许小数点后面有0位数字。

使用DECIMAL(18,4)之类的东西来代替,这样就可以了!

总共有18位,其中小数点后4位(小数点前14位)。

其他回答

DECIMAL(18,0)允许小数点后面有0位数字。

使用DECIMAL(18,4)之类的东西来代替,这样就可以了!

总共有18位,其中小数点后4位(小数点前14位)。

你应该这样使用is:

DECIMAL(m,a)

M是小数的总位数。

A是小数点后的最大位数。

http://www.tsqltutorials.com/datatypes.php有所有数据类型的描述。

在MySQL DB中十进制(4,2)只允许输入总共4位数字。正如您在decimal(4,2)中看到的,这意味着您可以总共输入4位数字,其中两位数字意味着要保留在小数点之后。

因此,如果您在MySQL数据库中输入100.0,它将显示一个错误,如“列的值超出范围”。

所以,你只能输入这个范围:从00.00到99.99。

其他答案都是对的。假设你的例子反映了所有的可能性,你想要的是DECIMAL(3,1)。或者,DECIMAL(14,1)将允许总共14个数字。你的工作是思考什么是足够的。

在大多数情况下,我使用decimal(9,2),它在sql decimal类型中占用最少的存储空间(5字节)。


Precision =>存储字节数

1 to 9 => 5 10-19 => 9 20-28 => 13 29 to 38 => 17


它可以存储从0到9 999 999.99(前7位+小数点后2位=总共9位),这对于大多数值来说都足够大。