返回给定表的列类型整数的查询

Posted

技术标签:

【中文标题】返回给定表的列类型整数的查询【英文标题】:Query that returns the column type integer for a given table 【发布时间】:2016-05-17 09:20:22 【问题描述】:

JDBC 支持以下内容:

ResultSet columns = connection.getMetaData().getColumns(null, schema, tableName, null);  

这样我可以检索给定表中所有列的信息,包括 DATA_TYPE 信息。该信息是 java 中的 int 类型。

我使用以下查询来检索列名和数据类型,但这会返回数据类型的字符串表示,我需要 int:

select column_name, data_type from all_tab_cols where table_name = 'tablename' and owner = 'owner';  

这行 java 代码如何转换为 Oracle DB 中的查询? 如何检索列的 int 表示形式? 我会使用连接,但我不知道从哪里获取信息。 Oracle 将这些信息存储在哪里?

【问题讨论】:

Oracle 中的标准数字数据类型是 NUMBER。 int 和 float/double 之间没有区别。 (如果你很幸运,如果一列真的是整数,你会看到类似 NUMBER(8,0) 的东西,但这种情况相当少见。)你建议如何识别哪些列是 int 哪些是 float/双倍? 【参考方案1】:

要在不使用任何 ORM 工具(如 hibernate)的情况下针对 DB 运行 SQL,您可以查看 PreparedStatement 类。

如果您想查看有关 PreparedStatement 返回的列的“元数据”,可以查看getMetaData() 方法,文档可以在here 找到,然后向 ResultSetMetaData 询问列类型:@ 987654326@documentation can be found here

关于您关于 Java 如何在 Oracle 中转换为 Query 的问题,它过于宽泛,无法在答案中进行描述。建议找个关于JDBC的教程或者官方tutorial。

【讨论】:

以上是关于返回给定表的列类型整数的查询的主要内容,如果未能解决你的问题,请参考以下文章

where 子句中带有字符的整数字段返回奇怪的输出

PLSQL - 如何计算动态查询返回的列数[重复]

7-10外连接查询

使用子查询对关联模型的列求和会为所有父项返回相同的数量

如何从一个表中过滤出其 id 出现在另一个表的列中的记录

“查询结构与函数结果类型不匹配。返回类型双精度与第 1 列中的预期类型整数不匹配。”?