sql >> データベース >  >> RDS >> PostgreSQL

エスケープされていないテキストをフィールドからpostgresの正規表現に追加する適切な方法は?

    最も簡単な方法は、正規表現を使用して文字列を正規表現に含める準備をすることです。文字列内の単語以外の文字をエスケープすることで、正規表現に対して安全にすることができます。例:

    => 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
    

    この限られたケースでは。




    1. play-slick 1.0.1 / slick 3.0でmysqlデータベースに接続できません:構成エラー

    2. SpringJUnit4ClassRunner / MySQL / Spring/Hibernateを使用しているときにトランザクションがロールバックしないのはなぜですか

    3. 任意のノードを入力として指定した Oracle SQL の完全な階層

    4. SQL Serverで特定の文字のUnicode値を返す方法– UNICODE()