[解決済み] 未知語からテキストへの変換関数の検索に失敗しました。
2022-03-15 06:35:45
質問
ある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
を使って簡単に修正できました。
cast
しかし、なぜこのようなことが起こったのか、私にはよく理解できません。私の混乱を2つの簡単な文章で説明します。
こちらはOKです。
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'
2番目の例では、なぜ変換に失敗するのでしょうか?私が理解していないロジックがあるのでしょうか、それともPostgreSQLの将来のバージョンで修正されるのでしょうか?
PostgreSQL 9.1.9
PostgreSQL 9.2.4でも同じ動作です( SQLフィドル )
解決方法は?
Postgresはコンテキストから型付けされていない定数の型を検出することができれば満足です。しかし、どのようなコンテキストも不可能な場合、そして、クエリが単純なものよりも少し複雑な場合、この機構は失敗します。これらのルールはあらゆるSELECT句に特有のものであり、より厳しいものもあればそうでないものもあります。もし私が言えるとしたら、古いルーチンはより寛容で(Oracleとの互換性が高く、初心者への悪影響が少ないため)、最新のルーチンはより寛容ではありません(型エラーへの安全性が高いため)。
テキスト定数のような未知のリテラル定数を扱えるようにしようという提案もありましたが、より多くの理由で拒否されました。だから、この分野での大きな変化は期待できない。この問題は通常、合成テストに関連するもので、実際のクエリ(列の型から型を推測するもの)にはあまり関係しません。
関連
-
単語をソートするカスタム関数とそれをPostgreSQLで使用する(実装コード)
-
Postgresqlのユーザーログインエラーの回数を制限するサンプルコード
-
Postgresqlのセルフインクリメントidをキーにした場合の重複問題の解決
-
Postgresqlのシーケンススキップの問題を解決する
-
[解決済み] PostgreSQLの場合。PostgreSQLのテーブルを表示する
-
[解決済み] psqlでデータベースを切り替えるには?
-
[解決済み] PostgreSQLで重複して更新された場合の挿入?
-
[解決済み] PostgreSQL 自動インクリメント
-
[解決済み] Postgresqlで見出し付きのテーブルをCSVで出力する方法は?
-
[解決済み] Postgresデータベースのエンコーディングの取得
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Postgresqlのユーザーログインエラーの回数を制限するサンプルコード
-
PostgresqlのデータベーステーブルのデータをExcel形式にエクスポートする方法(推奨)
-
postgresql いくつかのメソッドは、要約の重複するデータを削除する
-
PostgreSQLにおけるsequence、serial、identityの使い方の違いについて
-
Postgresqlのデータベースにおける配列の作成と変更に関する操作
-
PostgreSQLで時間指定タスクを実装する4つの方法
-
[解決済み] リレーションシップのパーミッションが拒否されました
-
[解決済み] PostgreSQLのINSERT ON CONFLICT UPDATE(upsert)は除外された値をすべて使用します。
-
[解決済み] PostgreSQL: ロールのログインが許可されていない
-
[解決済み] Postgresqlで「挿入無視」と「重複キー更新」(SQLマージ)をエミュレートする方法は?