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)
恒久対応としては正しくないので、ちゃんとぶつける文字の方を正しくしましょう。
コメント