最も簡単な方法は、正規表現を使用して文字列を正規表現に含める準備をすることです。文字列内の単語以外の文字をエスケープすることで、正規表現に対して安全にすることができます。例:
=> select regexp_replace('. word * and µ{', E'([^\\w\\s])', E'\\\\\\1', 'g');
regexp_replace
--------------------
\. word \* and µ\{
したがって、このようなものは一般的に機能するはずです:
where some_text ~* x || regexp_replace(some_field, E'([^\\w\\s])', E'\\\\\\1', 'g') || y
ここで、x
およびy
正規表現の他の部分です。
最後に正規表現が必要なかった場合(つまり、y
がない場合) 上記)、 (?q)
:
およびq
つまり:
したがって、次を使用できます:
where some_text ~* x || '(?q)' || some_field
この限られたケースでは。