6

我在使用 Java 和 JDBC 向 AS400 数据库插入语句时收到此错误。

4

4 回答 4

7

我想通了,我有一个长度为 4 和十进制数字 2 的数字字段,在我的插入中,我试图在这个数字字段中插入 100,这给出了这个错误。

我更改了表格并将其设为长度为 9 和十进制数字为 2
的数字,并且插入工作。

即使错误显示“转换错误”,实际上它的字段长度错误。

于 2009-09-10T17:43:17.277 回答
1

当用户 ID 的表从 2 位更新为 3 位并且查询插入到历史表中,其中历史表未更新为用户 ID 的 3 位时,我遇到了这个问题。用于Alter Table更正历史记录表,一切正常。

alter table "Table Name" ALTER COLUMN "COLUMN NAME" SET DATA TYPE NUMERIC(3)

错误信息不直观:

变量或参数 *N (#-302) 的转换错误 [IBM][System iAccess ODBC 驱动程序][DB2 for i5/OS]SQL0012 - 列“columnname”与表“Tablename”发生无限定的关联。(#12)

于 2016-03-14T16:54:18.407 回答
0

我的问题是我忽略了参数占位符周围有单引号这一事实。所以我得到了一个6 -- Numeric data that is not valid.错误。

因此,例如:

select someColumn
From   favTable
where  someOtherColumn = '?'

command.Parameters.Add("decVal", OleDbType.Decimal, 10).Value = model.someDecVal;

更正为:

select someColumn
From   favTable
where  someOtherColumn = ?

解决了我的问题。

在这里看起来很容易捕捉到,但是对于大查询,这很容易被忽略。在这上面浪费了大约一个小时。

于 2019-11-27T13:43:35.387 回答
0

我今天运行以下查询时遇到此错误:

select *
from mytable
where invoice_date >= '2019-01-01'

原来发票“日期”不是日期......它是一个模拟日期的小数。也许是糟糕的数据库设计,但简单的解决方法是:

select *
from mytable
where invoice_date >= 20190101
于 2019-06-28T13:36:59.433 回答