サンプル
環境
- pgAdmin 6.1
- PostgresSQL 14.1
- windows 10 Pro 64bit
エラーメッセージ
pgAdmin の場合
pgAdminは、PostgreSQLのGUI管理ツールです。以下のように、表示されます。
ERROR: 演算子が存在しません: character varying = integer
HINT: 指定した名称と引数の型に合う演算子がありません。明示的な型キャストが必要かもしれません。
psqlの場合
また、PostgreSQLのコマンドライン型のツールであるpsqlを利用した場合は、以下のように、表示されます。
SQL : operator does not exist: character varying = numeric
原因
エラーの原因は、SQLのWHERE句で、文字列を数値と比較しようとしていたため。SQLは文字列を数値として、直接認識できないため、比較はできません。
対処法
データ型を合わせることで解決します。今回は3つの方法をご紹介します。今回の場合は、1つめのシングルクォーテーション(')の書く場合が多いかと思います。
1 シングルクォーテーション(')
値が引用符で囲まれている場合は、文字列として表示されます。そうでない場合は、数値にとして表示されます。
2 CAST関数
SQLに準拠したものです。
3 ::演算子
CAST関数と同等の構文です。PostgreSQLで伝統的に使用されている方法です。