错误:未能找到从未知到文本的转换函数

时间:2014-08-07 21:45:40

标签: sql postgresql types casting union

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

有任何可能的方法来解决此错误吗?

2 个答案:

答案 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)

Reference