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