Error: ERROR: operator does not exist: character varying = integer が出た


エラーの通り、型変換問題です。
oracleと同じつもりでpostgreSQLを使っていて、適当に型変換してくれるかなーと思っていたら怒られました。
どうも調べてたら8.3あたりかららしいです。

エラーになったSQL

select * from table_name
where dat in (1,2,3)


datが文字型。

勿論、文字型にすれば動きます。
select * from table_name
where dat in ('1','2','3')

暗黙型変換を入れることで対応可能なのですが、ちょっと調査するときにそんなもん入れられない。

暗黙型変換の参考
https://qiita.com/6in/items/f23ead1314b9e6d2f2b7


ということで、ちょっと調査用のときの回避として、その場で型変換を入れました。

select * from table_name
where dat::integer in (1,2,3)

恒久対応としては正しくないので、ちゃんとぶつける文字の方を正しくしましょう。