In einer meiner select-Anweisungen habe ich den folgenden Fehler erhalten:
ERROR: failed to find conversion function from unknown to text
********** Error **********
ERROR: failed to find conversion function from unknown to text
SQL state: XX000
Dies war leicht zu beheben cast
, aber ich verstehe nicht ganz, warum es passiert ist. Ich werde meine Verwirrung mit zwei einfachen Aussagen veranschaulichen.
Dieser ist in Ordnung:
select 'text'
union all
select 'text';
Dies gibt einen Fehler zurück:
with t as (select 'text')
select * from t
union all
select 'text'
Ich weiß, dass ich es leicht beheben kann:
with t as (select 'text'::text)
select * from t
union all
select 'text'
Warum schlägt die Konvertierung im zweiten Beispiel fehl? Gibt es eine Logik, die ich nicht verstehe, oder wird diese in zukünftigen Versionen von PostgreSQL behoben?
PostgreSQL 9.1.9
Das gleiche Verhalten unter PostgreSQL 9.2.4 ( SQL Fiddle )
::text
hat bei mir nicht funktioniert. Bei dieser Lösung wurde "Text" vor das Textliteral gestellt