2016-11-04 34 views
0

FirebirdデータベースでPerl正規表現を使用する必要があります。Perl正規表現をSQL正規表現に変換する

Firebird RDBMSはSIMILAR TO-conditionを提供することによって正規表現をサポートしています。 残念ながら、FirebirdのSQL正規表現構文はPerl構文と異なります。

Perl正規表現をSQL正規表現に変換することはできますか? 私は完全な互換性は必要ありませんが、少なくとも量指定子と文字クラスは変換可能でなければなりません。

答えて

1

私はSQL構文に最もPerlの正規表現を変換するには、次の代替規則(オーダー事項)に来た:

まず、SQLの特殊文字をエスケープする必要があります:>\_

  1. _
  2. %>\%

その後、Perlの特殊文字と文字のCLA ssesを交換する必要があります。

  • .>_
  • \d>[:digit:]
  • \D>[^[:digit:]]
  • \w>[^[:whitespace:]]
  • \W>[:whitespace:]
  • \s>[:whitespace:]
  • \S>[^[:whitespace:]]
  • 注:デフォルトPerlは文字\がここSIMILAR TOのために使用されて脱出。

    他の代替品で私の答えを広げることは自由です。

    2

    [I]は完全な互換性は必要ありませんが、少なくとも量指定子と文字クラスは変換可能である必要があります。

    あなたはFirebird SIMILAR TO regex syntaxと文字クラス、?*+{exact_occurrences_number}{min,}{min,max}数量を使用することができ、ラッキーです。

    唯一の問題は、あなただけがPOSIX文字クラスを使用して、Unicodeのカテゴリ/プロパティクラスです:

    <predefined class name> ::= ALPHA | UPPER | LOWER | DIGIT
                                                                                                            | ALNUM | SPACE | WHITESPACE