【发布时间】:2013-08-07 02:08:23
【问题描述】:
在我的一个选择语句中,出现以下错误:
ERROR: failed to find conversion function from unknown to text
********** Error **********
ERROR: failed to find conversion function from unknown to text
SQL state: XX000
使用cast 很容易解决这个问题,但我不完全理解为什么会这样。我将用两个简单的陈述来说明我的困惑。
这个没问题:
select 'text'
union all
select 'text';
这将返回错误:
with t as (select 'text')
select * from t
union all
select 'text'
我知道我可以轻松解决它:
with t as (select 'text'::text)
select * from t
union all
select 'text'
为什么在第二个示例中转换失败?是否有一些我不明白的逻辑或者这将在未来的 PostgreSQL 版本中修复?
PostgreSQL 9.1.9
PostgreSQL 9.2.4 上的相同行为 (SQL Fiddle)
【问题讨论】:
-
::text对我不起作用。这个解决方案确实做到了,将“文本”放在文本文字之前:stackoverflow.com/a/25193282/349169 -
使用 PostgreSQL 9.6 会引发异常,但使用 PostgreSQL 10 及更高版本可以工作......(检查db-fiddle.com)
标签: postgresql postgresql-9.1 postgresql-9.2