我试图在SQL Server中找出一列的十进制数据类型。我需要能够存储像15.5,26.9,24.7,9.8等值
我将decimal(18, 0)分配给列数据类型,但这不允许我存储这些值。
decimal(18, 0)
正确的做法是什么?
DECIMAL(18,0)允许小数点后有0位。
DECIMAL(18,0)
使用像DECIMAL(18,4)这样的东西来代替,这样就可以了!
DECIMAL(18,4)
这就得到了一个共18位数字,小数点后是4(小数点前是14)。
你应该这样使用is:
DECIMAL(m,a)
m是小数的总位数。
m
a是小数点后的最大位数。
a
http://www.tsqltutorials.com/datatypes.php有所有数据类型的描述。
其他答案都是对的。假设你的例子反映了所有的可能性,你想要的是DECIMAL(3, 1)。或者,DECIMAL(14, 1)将允许总共14位。你的工作是思考什么是足够的。
DECIMAL(3, 1)
DECIMAL(14, 1)
Decimal的设置是它的精度和比例,或者在正常语言中,一个数字可以有多少位,以及你想在小数点的右边有多少位。
Decimal
因此,如果你将PI放入Decimal(18,0)中,它将被记录为3?
PI
Decimal(18,0)
3
如果你将PI放入Decimal(18,2)中,它将被记录为3.14?
Decimal(18,2)
3.14
如果将PI放入Decimal(18,10),则记录为3.1415926535。
Decimal(18,10)
3.1415926535
在MySQL数据库中,decimal(4,2)只允许输入总共4位数字。正如你在decimal(4,2)中看到的,这意味着你可以输入总共4位数字,其中两位数字意味着要保留在小数点后。
decimal(4,2)
因此,如果您在MySQL数据库中输入100.0,它将显示一个错误,如“列的值超出范围”。
所以,你只能输入这个范围:从00.00到99.99。
在大多数情况下,我使用decimal(9,2),它在sql decimal类型中占用最少的存储空间(5字节)。
Precision =>存储字节数
它可以存储从0到9 999 999.99(前7位+小数点后2位=总共9位),这对于大多数值来说都足够大。
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)
你可以试试这个
decimal(18,1)
数字的长度应该是18。小数点后的数字长度只能是1,不能超过1。