[pgsql-jp: 32460] replace関数の%文字を含む置換について

Masaki Naokawa nao_com21 @ tbg.t-com.ne.jp
2004年 3月 14日 (日) 16:50:34 JST


初めまして、直川と申します。

replace関数を用いて'%'を含む文字列の置換をしたところ
予期せぬ結果が返ってきました。

環境
 VineLinux	: v2.6
 PostgreSQL	: v7.3 (EUC_JP)

(1)文字化け
    select replace('te%st', 't', 'a');
              replace
    ---------------------------
     aeU
        WVS梯p萢a

(2)エラー発生
      select replace('te%t', 't', 'a');
      ERROR:  repalloc: invalid request size 1073741824

      #エラーの内容もよくわかりません

(3)'%'を2つ入れたらうまく動作しました(でもあやしい)
    select replace('te%%st', 't', 'a');
     replace
    ---------
     ae%sa

この件に関して、解決方法やバグであるなど
ご存知の方がおりましたらご教授ください。

また、'%' が特殊文字である場合やその他にも同じ現象が起こる
こと(特殊文字など)をご存知の方がおりましたら教えてください。

やりたいことは、入力した検索文字列に対して、PL/pgSQL関数内で以下の
特殊文字を置換して検索を実行したいと思っております。
      '   →   ''   :  引用符
     \   →  \\  :  バックスラッシュ
     %   →  \%  :  パーセント(LIKE検索時に文字として扱うため)
     _    →  \_   :  アンダーバー(同上)


以上、よろしくお願い致します。




pgsql-jp メーリングリストの案内