Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL リファレンス » SQL の使用 » SQL 言語の要素 » 探索条件 » LIKE 探索条件、REGEXP 探索条件、SIMILAR TO 探索条件

 

SIMILAR TO 探索条件

パターンと文字列を一致させます。

構文
expression [ NOT ] SIMILAR TO pattern [ ESCAPE escape-expression ]
パラメータ

expression   検索される式。

pattern   expression を検索するための正規表現。

サポートされている正規表現の構文の詳細については、正規表現の概要を参照してください。

escape-expression   一致で使用するエスケープ文字。デフォルトのエスケープ文字は NULL 文字で、文字列リテラル内では '\x00' のように指定します。

正規表現の構文 意味
\x x と同じものに一致します。ここでは、エスケープ文字は円記号 (\) と見なされます。たとえば、\[ は '[' に一致します。
x 任意の文字 (メタ文字以外) がそれ自体に一致します。たとえば、A は 'A' に一致します。
備考

部分文字列と文字列を一致させるには、パーセント記号のワイルドカードを使用します (%expression)。たとえば、SELECT ... WHERE Description SIMILAR TO 'car' は car にのみ一致し、sportscar には一致しません。一方、SELECT ... WHERE Description SIMILAR TO '%car' は、car や sportscar など、car で終わるすべての文字列に一致します。

部分文字クラスのみに一致させる場合は、外側の角カッコと、部分文字クラス用の角カッコを使用する必要があります。たとえば、expression SIMILAR TO '[[:digit:]]' のように指定します。部分文字クラスの一致の詳細については、正規表現:特殊部分文字クラスを参照してください。

文字列単位で比較する等価演算子 (=) やその他の演算子とは異なり、比較が文字単位で実行されます。たとえば、UCA 照合 (照合が UCA に設定された CHAR または NCHAR) で比較が行われる場合、'A'='AE' は true ですが、'A' SIMILAR TO 'AE' は false です。

文字単位で比較して一致するには、検索される式に含まれる各文字が、SIMILAR TO パターンに含まれる 1 文字またはワイルドカード文字に一致する必要があります。

データベース照合と一致

SIMILAR TO では、文字が等価かどうかの判断や文字クラス範囲の評価に、照合が使用されます。たとえば、データベースで大文字と小文字やアクセント記号が区別されない場合、一致でも大文字と小文字やアクセント記号が区別されません。範囲も、照合のソート順を使用して評価されます。

LIKE、SIMILAR TO、REGEXP における一致や評価範囲の動作の比較については、LIKE 探索条件、REGEXP 探索条件、SIMILAR TO 探索条件を参照してください。

各国文字 (NCHAR) サポート

SIMILAR TO 探索条件は、CHAR と NCHAR の文字列の比較に使用できます。この場合、共通データ型を使用して比較が行われるように、文字セット変換が実行されます。次に、文字単位の比較が実行されます。CHAR と NCHAR の比較を参照してください。

引用符で囲んだ値の前に N を付けることによって (たとえば、expression SIMILAR TO N'pattern')、expression または pattern を NCHAR 文字列リテラルとして指定できます。また、CAST 関数を使用して、CHAR または NCHAR にパターンをキャストすることもできます (たとえば、expression SIMILAR TO CAST(pattern AS datatype))。

文字列リテラルCAST 関数 [データ型変換]を参照してください。

参照