PostgreSQL エラー「ERROR: 演算子が存在しません: text = integer」が発生した場合の対処法

PostgreSQL エラー「ERROR: 演算子が存在しません: text = integer」が発生した場合の対処法

PostgreSQLで、エラー「ERROR: 演算子が存在しません: text = integer」が発生した場合の対処法を記述してます。型がtextのカラムにintegerでwhere inなどを使用した際に発生します。実行結果はpgadmin上で確認してます。

環境

  • OS CentOS Stream release 9
  • PostgreSQL 15.1
  • pgadmin4 6.16

エラーメッセージ

以下のテーブル「testtbl」で、textの「name」に「where in」で数値を指定した際に発生。

実行したクエリは以下となります。

select * from testtbl
where name in(111,222);

エラーメッセージ

ERROR:  演算子が存在しません: text = integer
LINE 2: where name in(111,222);
                   ^
HINT:  指定した名称と引数の型に合う演算子がありません。明示的な型キャストが必要かもしれません。
SQL 状態: 42883
文字: 34

原因

text型に対して「where in」で「数値」を指定しているため。

対処法

単純に文字として指定するか、

select * from testtbl
where name in('111','222');

実行結果

または型変換を行います。

select * from testtbl
where name::integer in(111,222);

実行結果