SIMILAR TO
と REGEXP
です。SIMILAR TO
述部は、ANSI/ISO SQL 2008 の一部です。しかしながら、2011年の次の標準 SQLのドラフトは、現在作成途中で、WG3 編集ミーティングがまさに今週韓国で開催されています。そして、SIMILAR TO
は、標準 SQL 規格の次のバージョンからは除かれるようです。というのも、この機能は、REGEXP_LIKE
述部 (以下を参照してください)に代わる方向だからです。SIMILAR TO
述部のシンタックスは、簡単です。SIMILAR TO
でサポートされている正規表現のパターンは、他のソフトウェアパッケージ(例えば Perl など)でサポートされている正規表現条件とは異なります。以下に、相違点の一部をリストします。(詳細は、SQL Anywhere のマニュアルに記載されています。)LIKE
や REGEXP
のように、SIMILAR TO
は、全体の値にマッチしますが、値の一部にはマッチしません。SIMILAR TO
は、"%" (パーセント) と "_" (下線) をLIKE と同じようにワイルドカード文字として使用します。".*"のかわりに、"%" を使用することができます。SIMILAR TO
は、[:ascii:]、 [:blank:]、 [:punct:]のような様々な 部分文字をサポートしていません。SIMILAR TO
が string 値を比較する場合に、照合ベースの比較を使用することです。これは、便利かもしれません。例えば、SQL Anywhere のデフォルトの大文字・小文字を区別する文字列マッチングでは、パターン [A]{1} は [a]{1} と同等です。そして、これらの同一性は、アクセント記号付文字の特定の照合にも適用される可能性があります。しかしながら、重要な欠点は、レンジパターンが、適切に機能しないことです。レンジパターン [A-C] は、実際、大文字 A、B、Cにのみマッチするわけではありません。デフォルトの大文字・小文字を区別する照合 [A-C] は、A、B、b、c、C のどの文字にもマッチします。 "a" とは マッチしません。なぜならば、"a" の文字は、照合順において"A" に先行しないからです。これは、上の例ではカナダの郵便番号を適切にバリデートできないことを意味しています。このクエリは、小文字を含むカナダの郵便番号を受けつけてしまいます。REGEXP
述部は、正規表現検索をサポートしている Perl やその他の UNIX ベースのツールの方式で正規表現パターンをサポートしています。繰り返しますが、シンタックスは簡単です。LIKE_REGEXP
を使用するという例外を除けば、シンタックスはバーチャルに同一です。サポートされているパターンは、標準の XQuery 部分からのものです。SQL Anywhere では、様々なソース、特に Perl からパターンシンタックスを採用してきました。 REGEXP
は、照合ベースのマッチングを使用しません。マッチングは、データベースキャラクターセットのコードポイント値に基づいています。例えば、単一の文字 X の比較X REGEXP '[A-C]'
は、CAST(X AS BINARY) >= CAST(A AS BINARY) AND CAST(X AS BINARY)
と同等です。REGEXP
は、プログラマーにとってなじみのある共通のメタ文字やサブクラスをサポートしています。また、特別なエスケープ文字、例えばスペースの "\s"、キャリッジリターンの "\r"、そして先読みアサーションや後読みアサーションなどの文字もサポートしています。下は、郵便番号をバリデートする同じ例ですが、今回は REGEXP
を使用しています。You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
38 | |
19 | |
14 | |
12 | |
10 | |
10 | |
10 | |
8 | |
8 | |
8 |