Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
パターンと文字列を照合します。
expression [ NOT ] REGEXP pattern [ ESCAPE escape-expression ]
expression 検索される文字列。
pattern expression を検索するための正規表現。
escape-expression 一致で使用されるエスケープ文字。デフォルトは円記号 (\) です。
REGEXP 探索条件は文字列全体に一致し、部分文字列には一致しません。部分文字列で文字列に一致させるには、残り部分と一致するワイルドカードで文字列を囲みます (.*pattern.*)。たとえば、SELECT ... WHERE Description REGEXP 'car' は car にのみ一致し、sportscar には一致しません。一方、SELECT ... WHERE Description REGEXP '.*car' は、car や sportscar など、car で終わるすべての文字列に一致します。または、REGEXP_SUBSTR 関数を使用するようにクエリを書き換えることができます。この関数は、文字列内の部分文字列を検索します。
.*pattern.*
SELECT ... WHERE Description REGEXP 'car'
SELECT ... WHERE Description REGEXP '.*car'
部分文字クラスのみに一致させる場合は、外側の角カッコと、部分文字クラス用の角カッコを使用する必要があります。たとえば expression REGEXP '[[:digit:]]' のように指定します。
expression REGEXP '[[:digit:]]'
REGEXP を使用した場合に、パターンに含まれるリテラルと文字とが一致するのは、厳密な意味で同じ文字の場合 (コードポイント値が同じ場合) のみです。文字クラスによる範囲 (たとえば '[A-F]') と一致する文字は、そのコードポイント値が、範囲の最初に指定されている文字 (A) のコードポイント値以上で、なおかつ、範囲で次に指定されている文字 (F) のコードポイント値以下の場合に限られます。
'[A-F]'
文字列単位で比較する等価演算子 (=) やその他の演算子とは異なり、比較が文字単位で実行されます。たとえば、UCA 照合 (照合が UCA に設定された CHAR または NCHAR) で比較が行われる場合、'Æ'='AE' は true ですが、'Æ' REGEXP 'AE' は false です。
'Æ'='AE'
'Æ' REGEXP 'AE'
REGEXP 探索条件は、CHAR と NCHAR の文字列の比較に使用できます。この場合、共通データ型を使用して比較が行われるように、文字セット変換が実行されます。次に、コードポイント単位の比較が実行されます。
引用符で囲んだ値の前に N を付けることによって (たとえば、expression REGEXP N'pattern')、expression または pattern を NCHAR 文字列リテラルとして指定できます。また、CAST 関数を使用して、CHAR または NCHAR にパターンをキャストすることもできます (たとえば、expression REGEXP CAST(pattern AS datatype))。
expression REGEXP N'pattern'
expression REGEXP CAST(pattern AS datatype)
SQL/2008 REGEXP 探索条件はベンダー拡張ですが、SQL/2008 標準の SQL 言語機能 F841 の LIKE_REGEX 探索条件とほぼ互換性があります。
SQL Anywhere では、ANSI SQL/2008 の機能 F281 をサポートしています。これにより、パターンとエスケープ式を実行時に評価される任意の式にできます。機能 F281 を使用すると、expression を単純なカラム参照よりも複雑な式にすることもできます。
SQL Anywhere では、ANSI SQL/2008 の機能 T042 をサポートしています。これにより、REGEXP 探索条件で LONG VARCHAR 値の文字列式を参照できます。
NCHAR の文字列式またはパターンを指定する REGEXP 探索条件は、ANSI SQL/2008 標準の機能 F421 です。