PostgreSQL8.3のエラー:bpchar型の扱い(operator does not exist: character varying = integer at character 69)

select * from テーブル名 where カラム名1 = '0' and カラム名2 = 1
PostgreSQL 8.3より前では問題なかったと思うのだが、8.3だとこのSQLでは以下のようなエラーが発生した。

SQL実行中に以下のエラーが発生しました。
ERROR: operator does not exist: character varying = integer at character 69

原因は、「カラム名2」の型が「bpchar」というものだったのに「'」で数値を囲っていなかったからだった。
・・・勉強不足だが、bpchar型って初めて見た。

select * from テーブル名 where カラム名1 = '0' and カラム名2 = 1

select * from テーブル名 where カラム名1 = '0' and カラム名2 = '1'
というように「'(アポストロフィー)」で数字の部分を囲ってやればエラーは解消する。
PostgreSQL8.3より前のバージョンだと、bpchar型という文字型っぽい型なのに「'(アポストロフィー)」を付け忘れていたとしても柔軟に動作してくれていたのだが、8.3からは厳しくなってるようだ。
この8.2と8.3でこういった細かな仕様が異なっていて、ちょっと面倒・・・。

前へ

「W-ZERO3[es]」機種変更キャンペーンのお知らせ【WILLCOM Info】・・・というメールが届いた

次へ

カラクリ時計(放生園)前の工事の様子 (愛媛県松山市道後湯之町6-7)