gpt4 book ai didi

sql - PostgreSQL:如何将带有 float 的字符串转换为整数?

转载 作者:行者123 更新时间:2023-11-29 11:54:16 25 4
gpt4 key购买 nike

我有一个奇怪的问题。某些表有整数列,我想为其插入带数字的字符串值。它适用于具有 110 等值的字符串,但不适用于带有小数点的值: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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com