算术溢出错误在插入时将数字转换为数据类型数字

pvz*_*kch 2 sql t-sql sql-server sql-server-2008-r2

我遇到这个显示算术溢出错误的查询有问题.

INSERT INTO seed_health_testing_form (seedlotno, modeoftesting, datetested, 
    datecollected, placecollected, sampleno, germination1, germination2, 
    germination3, germination4, germination5, germination6, germination7, 
    germination8, germination9, germination10, remarks) 
VALUES ( 'A00075', 'GTest', '2/14/2013', 
    '2/19/2013', 'Laguna', 0, 50.00, 50.00, 
    50.00, 50.00, 0.00, 0.00, 0.00, 
    0.00, 0.00, 0.00, '')
Run Code Online (Sandbox Code Playgroud)

表设计

[id]                [int]       IDENTITY(1,1) PRIMARY KEY NOT NULL
[seedlotno]         [varchar](50)   NULL
[modeoftesting]     [varchar](100)  NULL
[datetested]        [datetime]      NULL
[datecollected]     [datetime]      NULL
[placecollected]    [varchar](100)  NULL
[sampleno]          [int]           NULL
[germination1]      [decimal](3, 2) NULL
[germination2]      [decimal](3, 2) NULL
[germination3]      [decimal](3, 2) NULL
[germination4]      [decimal](3, 2) NULL
[germination5]      [decimal](3, 2) NULL
[germination6]      [decimal](3, 2) NULL
[germination7]      [decimal](3, 2) NULL
[germination8]      [decimal](3, 2) NULL
[germination9]      [decimal](3, 2) NULL
[germination10]     [decimal](3, 2) NULL
[remarks]           [varchar](1000) NULL
Run Code Online (Sandbox Code Playgroud)

我尝试逐行打破INSERT查询以跟踪错误的位置,但它始终指向第1行.仍然无法找到我的问题所在.

Lit*_*les 7

您的所有[decimal](3, 2)数据类型都是问题.

(3,2)告诉您的数量可以具有3位数字总精度,与正被保留用于小数部分2位数字.

因此,您只有1位可用于存储值50,这会导致溢出.

有关更多信息,请参阅decmial数据类型文档.