[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 メーリングリストの案内