PostgreSQL上有一个错误,它在我的一个select语句中给出。我在网上搜索了一个答案然后空手而归。另一个问题给出的答案不符合我的问题。
ERROR: failed to find conversion function from unknown to text ********** Error ********** ERROR: failed to find conversion function from unknown to text SQL state: XX000
我的查询看起来像这样:
Select *
from (select 'string' as Rowname, Data
From table)
Union all
(select 'string2' as Rowname, Data
From table)
这样做的目的是指定行在一个点上的位置。该字符串是行的名称。这是我想要的输出:
Rowname Data
string 53
string2 87
有任何可能的方法来解决此错误吗?
答案 0 :(得分:15)
你的陈述有几个问题。但错误消息暗示您需要 explicit cast 来声明字符串文字'string'
的(但未知)数据类型:
SELECT 'string'::text AS rowname, data FROM tbl1
UNION ALL
SELECT 'string2', data FROM tbl2
这仅适用于UNION
查询的第一个SELECT。后来的腿已经知道每列的名称和类型。
在其他上下文中(如INSERT
)Postgres可以从目标列派生数据类型,并尝试自动强制转换为正确的数据类型。
答案 1 :(得分:0)
Select * from (select CAST('string' AS text) as Rowname, Data
From table) Union all
(select CAST('string2' AS text) as Rowname, Data
From table)