PostgreSQL returns java.sql.Types.OTHER when i select a cons



当在java上运行of of of java

SELECT '' AS COL1, 0 AS COL2 FROM MYTABLE 1=2;

列类型是Types.OTHER,均用于COL1和COL2。因为很明显的结果集没有任何行。

但是,如果我使用以下查询的结果集中有行集:

SELECT '' AS COL1, 0 AS COL2 FROM MYTABLE;

col1的类型仍然是 Types.OTHER,但COL2类型为 Types.INTEGER。就我而言,我需要Types.VARCHARTypes.INTEGER甚至结果是空的。

在DB层或JDBC URL上有任何配置,以获取两个查询的Types.VARCHARTypes.INTEGER

尝试显式铸造:

SELECT ''::VARCHAR  AS COL1, 0::INTEGER AS COL2 FROM MYTABLE;

Postgres JDBC驱动程序9.4.1212报告常数0的类型为Types.INTEGER = 4,无论是否有结果(这也可能取决于服务器版本(9.4服务器(。

字符串常数仍然报告为Types.OTHER。对于此类列ResultSetMetaData.getColumnClassName(i)返回java.lang.String,因此,如果遇到Types.OTHER,则可以使用此信息将列识别为字符列。

如果您希望ResultSetMetaData返回所需的类型,请从GitHub获取来源并修补ResultSetMetaData进行此翻译。

最新更新