Informix DB 上的 ROW_NUMBER() 显示不支持 BIGINT

ROW_NUMBER() on informix DB shows BIGINT is not supported

我正在尝试将行号添加到 sql 查询以获得 return 结果集,但 JDBC 不支持它所说的 BIGINT。我查了https://db.apache.org/derby/docs/10.9/ref/rreffuncrownumber.html and https://www.ibm.com/support/knowledgecenter/SSGU8G_11.50.0/com.ibm.jdbc_pg.doc/ids_jdbc_141.htm.

代码:

String query = new StringBuilder("SELECT ROW_NUMBER() OVER() AS id, * FROM "+tableName).toString();

错误:

[Informix JDBC Driver][Informix]The data type bigint is not supported for current client/server configuration.

IBM 的解决方案告诉您在插入后使用 getBigSerial() 来获取 BIGINT。但是,我想找到一种方法能够在查询 table 时添加一些自动递增数字,而无需创建实际列。有办法吗?

您可以在查询中将其转换为 VARCHAR。

如果您将它用于除呈现给客户之外的其他用途,则可以在 Java 代码中将该字符串转换为 BigInteger。

选角不错:

String query = "SELECT CAST(ROW_NUMBER() OVER() AS INT) AS id, * FROM "+tableName;

我用我的 informix 数据库测试它,它可以工作。