2010年12月13日月曜日

postgresで数値型で LIKE演算子を使ったらエラーになる場合の対策

PostgreSQL - bugs - BUG #4055: Using Like in PostgreSQL 8.2.7 and 8.3.1
ERROR: operator does not exist: bigint ~~ unknown
LINE 1: select * from movimientos where idmovimientos like '178'
^
HINT: No operator matches the given name and argument type(s). You might
need to add explicit type casts.

PostgreSQL 8.2で動いてたSQLが、PostgreSQL 9.0にしたら↑と同じように、bigintでLIKEを使う箇所でエラーになった。
ERROR:  operator does not exist: bigint ~~ unknown
(略)
HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.

PostgreSQL8.3からは型の使い方が厳密になり、暗黙の型変換をしてくれなくなったために発生したエラーらしい。

キャストを追加してバージョン互換性を保つには — Let's Postgresに対策が書いてあるが、ユーザー定義のCASTではレスポンスが少し心配?(標準のCASTとそれほど変わらない?)

影響箇所が少ない(そもそも数値型にLIKE文なんてレアだ)から、個別対処にしようかな。

0 件のコメント:

ブログ アーカイブ

カテゴリー