【发布时间】:2013-12-14 19:51:35
【问题描述】:
我需要从任意 SQL 查询中获取列类型。这当然是可能的,PgAdmin3 做到了。
例如,给定一个查询:
SELECT src.col, CAST(src.col AS varchar)
FROM (SELECT 'anything' AS col) AS src;
PgAdmin3 返回:
如您所见,列类型是根据执行的查询而不是表架构显示的。如何以编程方式获取结果集中列的数据类型?
【问题讨论】:
-
我认为这是同一个问题answered here。该帖子中的查询对您有帮助吗?
-
@JeanneBoyarsky 不是真的。这将访问信息模式,AFAIU 将信息存储在持久列上。我不认为我可以用它来了解一些
COUNT(*)是bigint也不能了解应用类型转换。或者我没有得到信息架构的目的? -
哦。因此,您需要类似 describe 但用于查询而不是表的内容。如果您使用像 Java 这样的调用语言,则有 API 可以从查询的元数据中获取此信息。我不知道如何在命令行(原始sql)
-
@JeanneBoyarsky 我正在使用 Ruby 的 ActiveRecord,是的,这种方法听起来很有趣。我必须进行调查,尽管我很确定可以使用原始 SQL 来完成。
-
更好的解决方案是另一个答案:stackoverflow.com/a/25369205/3494126
标签: postgresql types