一尘不染

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

sql

在PostgreSQL上,我的一条选择语句中给出了一个错误。我在网上搜索了一个答案,然后空手而归。在另一个问题中给出的答案不适合我的问题。

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

有什么办法可以解决此错误?


阅读 102

收藏
2021-05-16

共1个答案

一尘不染

您的陈述有两个问题。但是错误消息暗示您需要 显式强制转换 来声明字符串文字的(至今未知)数据类型'string'

SELECT text 'string' AS rowname, data FROM tbl1
UNION ALL
SELECT 'string2', data FROM tbl2

强制SELECT执行UNION查询之一就足够了。通常是第一个,其中还要确定列名称。随后SELECT具有未知类型的列表将排在一行。

在其他情况下(如VALUES附加到的子句INSERT),Postgres从目标列派生数据类型,并尝试自动强制为正确的类型。

2021-05-16