メインコンテンツまでスキップ

パターンマッチング演算子

説明

パターンマッチング演算子は文字型データを比較するために使用されます。

演算子の紹介

演算子機能
<char1> [NOT] LIKE <char2><char1>がパターン<char2>にマッチしない場合、TRUEになります。<char2>では、文字%は0個以上の任意の文字にマッチします(空文字列を除く)。文字_は任意の1文字にマッチします。ワイルドカード文字の前にエスケープ文字がある場合、リテラル文字として扱われます。SELECT 'ABCD' LIKE '%C_'
<char1> [NOT] {REGEXP | RLIKE} <char2><char1>がパターン<char2>にマッチしない場合、TRUEになります。正規表現の具体的なルールについては、後続のREGEXPセクションを参照してください。SELECT 'ABCD' REGEXP 'A.*D'

LIKE

LIKE条件はパターンマッチングを含むテストを指定します。等価比較演算子(=)は1つの文字値を別の文字値に正確にマッチさせますが、LIKE条件は最初の値の中で2番目の値で指定されたパターンを検索することで、1つの文字値の一部を別の文字値とマッチさせます。

構文は以下の通りです:

<char1> [ NOT ] LIKE <char2> [ ESCAPE 'char_escape' ]

各要素の説明:

  • char1 は文字式(文字列カラムなど)で、検索値と呼ばれます。
  • char2 は文字式で、通常は文字列リテラルであり、パターンと呼ばれます。
  • char_escape(オプション)は文字式で、長さ1の文字である必要があります(ascii エンコーディングにおいて)。エスケープ文字を定義でき、char_escape を指定しない場合、デフォルトで ' \ ' がエスケープ文字となります。

両方の文字式(char1char2)は、CHAR、VARCHAR、または STRING データ型のいずれかを使用できます。異なる型の場合、Doris はすべて VARCHAR または STRING に変換します。

パターンには特別なパターンマッチング文字を含めることができます:

  • パターン内のアンダースコア(_)は、値内の正確に1つの文字にマッチします。
  • パターン内のパーセント記号(%)は、値内の0個または複数の文字にマッチできます。パターン % は NULL にマッチしません。

Example

select "%a" like "\%_";

結果は以下の通りです。「%」は特殊文字であるため、正しくマッチさせるには「%」でエスケープする必要があります。

+-----------------+
| "%a" like "\%_" |
+-----------------+
| 1 |
+-----------------+
select "%a" like "a%_" ESCAPE "a";

前の例との違いは、「a」がエスケープ文字として指定されていることです。

+----------------------------+
| "%a" like "a%_" ESCAPE "a" |
+----------------------------+
| 1 |
+----------------------------+

REGEXP (RLIKE)

REGEXPはLIKE条件と似ていますが、LIKEが実行する単純なパターンマッチングではなく、REGEXPは正規表現マッチングを実行する点が異なります。この条件は、文字列を評価するために文字で定義された入力文字のセットを使用します。

構文は以下の通りです:

<char1> [ NOT ] { REGEXP | RLIKE } <char2>

ここで:

  • char1 は文字式(文字列カラムなど)で、検索値として知られています。
  • char2 は文字式で、通常は文字列リテラルで、パターンとして知られています。

両方の文字式(char1char2)は、CHAR、VARCHAR、またはSTRINGデータ型のいずれでも構いません。それらが異なる場合、DorisはそれらをすべてVARCHARまたはSTRINGに変換します。