1
,10
等值的字符串,但对于带小数点的值失败:3.14
。
这样的SQL看起来像:
INSERT INTO test (intcol) VALUES ('2');
INSERT INTO test (intcol) VALUES ('1.7');
失败了:
ERROR: invalid input syntax for integer: "1.7"
我在Oracle和Informix中尝试过这样的代码。两者都有效但不同。 Oracle对其进行舍入并插入2,而Informix会截断它并插入1。
我知道在PostgreSQL中我可以使用:
INSERT INTO test (intcol) VALUES (1.7);
然后PostgreSQL对它进行舍入并插入2,但我想知道我是否可以为字符串做类似的事情。
关于问题"为什么?"我可以回答这是使用PreparedStatement的更大的apliaction的一部分,其中所有参数都是字符串。这个appliaction不会检查数据库模式是否为每列使用特定类型的变量,它只是使用字符串,实际上这个PreparedStatement看起来像:
InsertSQL("INSERT INTO " + table_name + " (" + columns + ") VALUES (" + question_marks + ")", csv_data);
答案 0 :(得分:4)
使用cast('1.7' as double precision)
,然后尝试插入。
INSERT INTO test (intcol) VALUES (cast('1.7' as double precision));
答案 1 :(得分:2)
如果您真的无法直接插入整数,可以使用 round 功能,如下所示:
InsertSQL("INSERT INTO " + table_name + " (" + columns + ") VALUES (round(" + question_marks + "))", csv_data);