作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个奇怪的问题。某些表有整数列,我想为其插入带数字的字符串值。它适用于具有 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,其中所有参数都是字符串。此应用程序不检查数据库架构以对每一列使用特定类型的变量,它只是使用字符串,实际上此 PreparedStatement 如下所示:
InsertSQL("INSERT INTO " + table_name + " (" + columns + ") VALUES (" + question_marks + ")", csv_data);
最佳答案
使用 cast('1.7' as double precision)
然后尝试插入它。
INSERT INTO test (intcol) VALUES (cast('1.7' as double precision));
关于sql - PostgreSQL:如何将带有 float 的字符串转换为整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33997695/
我是一名优秀的程序员,十分优秀!