piro_yamagoo回答ポイント 100ptウォッチ 1

[postgresql]

postgresql 8.3以降、型変換のチェックが厳しくなったようで
8.1で問題なかった下記SQLが9.1ではエラーを起こすようになりました。

varchar で定義されているフィールドを数値で検索したい
select * from t_sample where varcharcol = 1
ERROR: operator is not unique: character varying = integer at character 45
HINT: Could not choose a best candidate operator. You might need to add explicit type casts.

もちろん文字列型で検索するように''で囲んで
select * from t_sample where varcharcol = '1'
とするとエラーにはならないのですが、アプリケーション内で利用しているため
できればアプリケーションをなおさずに対処したいと考えています。

暗黙変換を期待して下記CAST文を投入したのですが、自動変換してくれないようです。
CREATE CAST (int2 AS varchar) WITH INOUT AS IMPLICIT;
CREATE CAST (varchar AS int2) WITH INOUT AS IMPLICIT;

8.3以前のversionと互換にさせる対処方法ご存じの方教えて下さい。

※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。
ログインして回答する

みんなの回答

この質問へのコメント

コメントはありません

この質問への反応(ブックマークコメント)

質問の情報

登録日時
2013-06-19 14:49:09
終了日時
2013-06-26 14:50:03
回答条件
1人5回まで

この質問のカテゴリ

この質問に含まれるキーワード

postgreSQL330SQL1319アプリケーション2247

人気の質問

メニュー

PC版