メインコンテンツまでスキップ
バージョン: 26.x

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

説明

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

演算子紹介

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

LIKE

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

構文は以下のとおりです:

<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に変換します。