PostgreSQLで、selectステートメントの1つにエラーが発生します。私は答えをウェブで検索し、手ぶらで出てきました。別の質問で与えられた答えは私の問題に合いませんでした。
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
このエラーを修正するための可能な方法はありますか?
あなたの声明にはいくつかの問題があります。しかし、エラーメッセージは、文字列リテラル'string'
の(まだ不明な)データ型を宣言するために明示的なキャストが必要であることを示しています:
SELECT text 'string' AS rowname, data FROM tbl1
UNION ALL
SELECT 'string2', data FROM tbl2
SELECT
クエリの1つのUNION
にキャストするだけで十分です。通常、最初のもので、列名も決定されます。タイプが不明な後続のSELECT
リストは一列に並びます。
他のコンテキスト(VALUES
に付加されたINSERT
句など)では、Postgresはターゲット列からデータ型を取得し、適切な型に自動的に強制しようとします。
Select * from (select CAST('string' AS text) as Rowname, Data
From table) Union all
(select CAST('string2' AS text) as Rowname, Data
From table)