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

文字列内の検索に関する関数

このセクションのすべての関数は、デフォルトで大文字と小文字を区別して検索を行います。大文字と小文字を区別しない検索は通常、別の関数バリアントで提供されます。

注記

大文字と小文字を区別しない検索は、英語の小文字と大文字のルールに従います。例えば、英語では大文字の II ですが、トルコ語では İ です。他の言語に対する結果は予期しないものになる場合があります。

このセクションの関数も、検索する文字列(このセクションでは haystack と呼ばれます)と検索する文字列(このセクションでは needle と呼ばれます)がシングルバイトエンコードのテキストであると仮定しています。この仮定が破られると、例外はスローされず、結果は不定となります。UTF-8エンコードされた文字列での検索は通常、別の関数バリアントで提供されます。同様に、UTF-8関数バリアントが使用され、入力文字列がUTF-8エンコードのテキストでない場合、例外はスローされず、結果は不定です。自動Unicode正規化は行われませんが、これを行うために normalizeUTF8*() 関数を使用できます。

一般的な文字列関数文字列内の置換関数 は別々に説明されています。

position

文字列 haystack における部分文字列 needle の位置(バイト単位で、1から始まる)を返します。

構文

エイリアス:

  • position(needle IN haystack)

引数

  • haystack — 検索が行われる文字列。 String または Enum
  • needle — 検索対象の部分文字列。 String
  • start_pos – 検索を開始する haystack 内の位置(1ベース)。 UInt。オプション。

返される値

  • 部分文字列が見つかった場合、1からカウントしたバイトの開始位置。 UInt64
  • 部分文字列が見つからなかった場合は 0。 UInt64

部分文字列 needle が空の場合、これらのルールが適用されます:

  • start_pos が指定されなかった場合: 1 を返す
  • start_pos = 0: 1 を返す
  • start_pos >= 1 かつ start_pos <= length(haystack) + 1: start_pos を返す
  • その他: 0 を返す

同じルールは、関数 locatepositionCaseInsensitivepositionUTF8 および positionCaseInsensitiveUTF8 にも適用されます。

クエリ:

結果:

start_pos 引数を使用した例:

クエリ:

結果:

needle IN haystack 構文の例:

クエリ:

結果:

空の needle 部分文字列を使用した例:

クエリ:

結果:

locate

位置 と似ていますが、引数 haystacklocate が逆になっています。

この関数の動作は、ClickHouseのバージョンに依存します:

  • バージョン < v24.3 では、locate は関数 position のエイリアスで、引数 (haystack, needle[, start_pos]) を受け入れました。
  • バージョン >= 24.3 では、locate は独立した関数(MySQLとの互換性を向上させるため)で、引数 (needle, haystack[, start_pos]) を受け入れます。以前の動作は、設定 function_locate_has_mysql_compatible_argument_order = false を使用して復元できます。

構文

positionCaseInsensitive

位置 の大文字と小文字を区別しない不変版です。

クエリ:

結果:

positionUTF8

位置 と似ていますが、haystackneedle がUTF-8エンコードされた文字列であることを前提としています。

関数 positionUTF8 は、文字 ö(二点の部分で表現)が単一のUnicodeコードポイントとして正しくカウントされます:

クエリ:

結果:

positionCaseInsensitiveUTF8

位置UTF8 と似ていますが、大文字と小文字を区別しない検索を行います。

multiSearchAllPositions

位置 と似ていますが、haystack 文字列内の複数の needle 部分文字列の位置(バイト単位で、1から始まる)を返します。

注記

すべての multiSearch*() 関数は、最大 28 の needles をサポートします。

構文

引数

  • haystack — 検索が行われる文字列。 String
  • needle — 検索される部分文字列。 Array

返される値

  • 部分文字列が見つかった場合の、1からカウントしたバイトの開始位置の配列。
  • 部分文字列が見つからなかった場合は 0。

クエリ:

結果:

multiSearchAllPositionsCaseInsensitive

multiSearchAllPositions と似ていますが、大文字と小文字を区別しません。

構文

引数

  • haystack — 検索が行われる文字列。 String
  • needle — 検索される部分文字列。 Array

返される値

  • 部分文字列が見つかった場合の、1からカウントしたバイトの開始位置の配列(部分文字列が見つかった場合)。
  • 0 は部分文字列が見つからなかった場合。

クエリ:

結果:

multiSearchAllPositionsUTF8

multiSearchAllPositions と似ていますが、haystackneedle の部分文字列がUTF-8エンコードされた文字列であることを前提としています。

構文

引数

  • haystack — 検索が行われるUTF-8エンコードされた文字列。 String
  • needle — 検索されるUTF-8エンコードされた部分文字列。 Array

返される値

  • 部分文字列が見つかった場合の、1からカウントしたバイトの開始位置の配列(部分文字列が見つかった場合)。
  • 0 は部分文字列が見つからなかった場合。

ClickHouse をUTF-8文字列として与え、C (\x43) と H (\x48) の位置を見つけます。

クエリ:

結果:

multiSearchAllPositionsCaseInsensitiveUTF8

multiSearchAllPositionsUTF8 と似ていますが、大文字と小文字を区別しません。

構文

引数

  • haystack — 検索が行われるUTF-8エンコードされた文字列。 String
  • needle — 各UTF-8エンコードされた部分文字列。 Array

返される値

  • 部分文字列が見つかった場合の、1からカウントしたバイトの開始位置の配列(部分文字列が見つかった場合)。
  • 0 は部分文字列が見つからなかった場合。

ClickHouse をUTF-8文字列として与え、c (\x63) と h (\x68) の位置を見つけます。

クエリ:

結果:

multiSearchFirstPosition

position と似ていますが、haystack 文字列内の複数の needle 文字列の中で、最も左のオフセットを返します。

関数 multiSearchFirstPositionCaseInsensitivemultiSearchFirstPositionUTF8multiSearchFirstPositionCaseInsensitiveUTF8 は、この関数の大文字と小文字を区別しないおよび/またはUTF-8バリアントを提供します。

構文

引数

  • haystack — 検索が行われる文字列。 String
  • needle — 各部分文字列。 Array

返される値

  • haystack 文字列内で、複数の needle 文字列の中で最も左のオフセット。
  • 一致がない場合は 0。

クエリ:

結果:

multiSearchFirstPositionCaseInsensitive

multiSearchFirstPosition と似ていますが、大文字と小文字を区別しません。

構文

引数

  • haystack — 検索が行われる文字列。 String
  • needle — 各部分文字列。 Array

返される値

  • haystack 文字列内で、複数の needle 文字列の中で最も左のオフセット。
  • 一致がない場合は 0。

クエリ:

結果:

multiSearchFirstPositionUTF8

multiSearchFirstPosition と似ていますが、haystackneedle がUTF-8文字列であることを前提としています。

構文

引数

  • haystack — UTF-8文字列で、検索が行われる。 String
  • needle — 各UTF-8部分文字列。 Array

返される値

  • haystack 文字列内で、複数の needle 文字列の中で最も左のオフセット。
  • 一致がない場合は 0。

UTF-8文字列 hello world で、与えられたニードルの中で一致するものの最も左のオフセットを見つけます。

クエリ:

結果:

multiSearchFirstPositionCaseInsensitiveUTF8

multiSearchFirstPosition と似ていますが、haystackneedle がUTF-8文字列であり、大文字と小文字を区別しません。

構文

引数

  • haystack — UTF-8文字列で、検索が行われる。 String
  • needle — 各UTF-8部分文字列。 Array

返される値

  • haystack 文字列内で、複数の needle 文字列の中で最も左のオフセット(大文字と小文字を区別しない)。
  • 一致がない場合は 0。

UTF-8文字列 HELLO WORLD で、与えられたニードルの中で一致するものの最も左のオフセットを見つけます。

クエリ:

結果:

multiSearchFirstIndex

haystack 文字列内で最も左に見つかったニードルのインデックス i(1から始まる)を返します。一致がない場合は 0 を返します。

関数 multiSearchFirstIndexCaseInsensitivemultiSearchFirstIndexUTF8、および multiSearchFirstIndexCaseInsensitiveUTF8 は、大文字と小文字を区別しないおよび/またはUTF-8バリアントを提供します。

構文

引数

  • haystack — 検索が行われる文字列。 String
  • needle — 各部分文字列。 Array

返される値

  • 最も左に見つかったニードルのインデックス i(1から始まる)。一致がない場合は 0。

クエリ:

結果:

multiSearchFirstIndexCaseInsensitive

最も左に見つかったニードルのインデックス i(1から始まる)を、大文字と小文字を区別せずに返します。

構文

引数

  • haystack — 検索が行われる文字列。 String
  • needle — 各部分文字列。 Array

返される値

  • 最も左に見つかったニードルのインデックス i(1から始まる)。一致がない場合は 0。

クエリ:

結果:

multiSearchFirstIndexUTF8

最も左に見つかったニードルのインデックス i(1から始まる)を、haystackneedle がUTF-8エンコードの文字列であることを前提に返します。

構文

引数

  • haystack — UTF-8文字列で、検索が行われる。 String
  • needle — 各UTF-8部分文字列。 Array

返される値

  • 最も左に見つかったニードルのインデックス i(1から始まる)。一致がない場合は 0。

UTF-8文字列 Hello World を与え、UTF-8文字列 HelloWorld の最初のインデックスを見つけます。

クエリ:

結果:

multiSearchFirstIndexCaseInsensitiveUTF8

最も左に見つかったニードルのインデックス i(1から始まる)を、haystackneedle がUTF-8エンコードされた文字列であると仮定して、大文字と小文字を区別せずに返します。

構文

引数

  • haystack — UTF-8文字列で、検索が行われる。 String
  • needle — 各UTF-8部分文字列。 Array

返される値

  • 最も左に見つかったニードルのインデックス i(1から始まる)。一致がない場合は 0。

UTF-8文字列 HELLO WORLD を与え、UTF-8文字列 helloworld の最初のインデックスを見つけます。

クエリ:

結果:

multiSearchAny

少なくとも1つの文字列 needle<sub>i</sub> が文字列 haystack と一致する場合は 1 を返し、一致しない場合は 0 を返します。

関数 multiSearchAnyCaseInsensitivemultiSearchAnyUTF8 および multiSearchAnyCaseInsensitiveUTF8 は、大文字と小文字を区別しないおよび/またはUTF-8バリアントを提供します。

構文

引数

  • haystack — 検索が行われる文字列。 String
  • needle — 各部分文字列。 Array

返される値

  • 一致があった場合は 1。
  • 一致がなかった場合は 0。

クエリ:

結果:

multiSearchAnyCaseInsensitive

multiSearchAny と似ていますが、大文字と小文字を区別しません。

構文

引数

  • haystack — 検索が行われる文字列。 String
  • needle — 各部分文字列。 Array

返される値

  • 大文字と小文字を区別せずに一致があった場合は 1。
  • 大文字と小文字を区別しない一致がなかった場合は 0。

クエリ:

結果:

multiSearchAnyUTF8

multiSearchAny と似ていますが、haystackneedle の部分文字列がUTF-8エンコードされた文字列であることを前提としています。

構文

引数

  • haystack — UTF-8文字列で、検索が行われる。 String
  • needle — 各UTF-8部分文字列。 Array

返される値

  • 一致があった場合は 1。
  • 一致がなかった場合は 0。

ClickHouse をUTF-8文字列として与え、C (\x43) または H (\x48) の文字が単語の中にあるかを確認します。

クエリ:

結果:

multiSearchAnyCaseInsensitiveUTF8

multiSearchAnyUTF8 と似ていますが、大文字と小文字を区別しません。

構文

引数

  • haystack — UTF-8文字列で、検索が行われる。 String
  • needle — 各UTF-8部分文字列。 Array

返される値

  • 一致があった場合は 1。
  • 一致がなかった場合は 0。

ClickHouse をUTF-8文字列として与え、文字 h (\x68) が単語の中にあるかを、大文字と小文字を区別せずに確認します。

クエリ:

結果:

match

文字列 haystack が正規表現 pattern に一致するかどうかを返します。re2正規表現構文 に基づいています。

マッチングはUTF-8に基づいています。例えば、. はUTF-8で2バイトで表現されるUnicodeコードポイント ¥ に一致します。正規表現にはNULLバイトが含まれてはいけません。haystack または pattern が有効なUTF-8でない場合、動作は不定です。

re2のデフォルトの動作とは異なり、. は改行に一致します。これを無効にするには、パターンの前に (?-s) を追加してください。

文字列内の部分文字列を検索したいだけの場合は、関数 like または position を使用することができます。これらはこの関数よりも速く動作します。

構文

エイリアス: haystack REGEXP pattern operator

multiMatchAny

match のように、パターンの1つでも一致すれば 1 を返し、そうでなければ 0 を返します。

注記

multi[Fuzzy]Match*() ファミリーの関数は、(Vectorscan)[https://github.com/VectorCamp/vectorscan] ライブラリを使用します。そのため、ClickHouse がベクトルスキャンのサポートでコンパイルされている場合のみ有効です。

すべてのハイパースキャンを使用する関数を無効にするには、設定 SET allow_hyperscan = 0; を使用します。

ベクトルスキャンの制約により、haystack 文字列の長さは 232 バイト未満でなければなりません。

ハイパースキャンは、一般的に正規表現のサービス拒否攻撃(ReDoS)の脆弱性があります(例えば、(ここ)[https://www.usenix.org/conference/usenixsecurity22/presentation/turonova]、(ここ)[https://doi.org/10.1007/s10664-021-10033-1] および (ここ)[https://doi.org/10.1145/3236024.3236027] を参照してください)。ユーザーは、提供されたパターンを慎重に確認することを推奨します。

文字列内の複数の部分文字列を検索したいだけの場合は、関数 multiSearchAny を使用することができます。これらはこの関数よりも速く動作します。

構文

multiMatchAnyIndex

multiMatchAny のように、haystack と一致する任意のインデックスを返します。

構文

multiMatchAllIndices

multiMatchAny のように、haystack に対して一致するすべてのインデックスの配列を返します。

構文

multiFuzzyMatchAny

multiMatchAny のように、任意のパターンが恒常的な編集距離内で haystack に一致する場合は 1 を返します。この関数はハイパースキャンライブラリの実験的な機能に依存しており、一部の複雑なケースでは遅くなる可能性があります。パフォーマンスは編集距離の値や使用するパターンによって変わりますが、常に非ファジー変種と比較して高価です。

注記

multiFuzzyMatch*() 関数ファミリーは、ハイパースキャンの制約により、UTF-8正規表現をサポートしていません(バイト列として扱います)。

構文

multiFuzzyMatchAnyIndex

multiFuzzyMatchAny のように、恒常的な編集距離内で haystack に一致する任意のインデックスを返します。

構文

multiFuzzyMatchAllIndices

multiFuzzyMatchAny のように、恒常的な編集距離内で haystack に一致するすべてのインデックスの配列を返します。

構文

extract

文字列内の正規表現の最初の一致を返します。 haystackpattern 正規表現に一致しない場合、空の文字列が返されます。

正規表現にキャプチャグループがある場合、この関数は入力文字列を最初のキャプチャグループに対して一致させます。

構文

引数

返される値

  • haystack 文字列内の正規表現の最初の一致。 String

クエリ:

結果:

extractAll

文字列内の正規表現のすべての一致の配列を返します。haystackpattern 正規表現に一致しない場合、空の文字列が返されます。

サブパターンに関する動作は、関数 extract と同様です。

構文

引数

返される値

  • haystack 文字列内の正規表現の一致の配列。 Array (String)。

クエリ:

結果:

extractAllGroupsHorizontal

haystack 文字列を pattern 正規表現を用いてマッチさせます。最初の配列には最初のグループに一致するすべてのフラグメントが含まれ、次の配列には2番目のグループに一致するものが含まれます。

この関数は、extractAllGroupsVertical よりも遅くなります。

構文

引数

  • haystack — 入力文字列。 String
  • patternre2正規表現構文 を用いた正規表現。グループを含み、各グループが括弧で囲まれている必要があります。pattern にグループが含まれていない場合は例外がスローされます。 String

返される値

  • 一致の配列の配列。 Array
注記

haystackpattern 正規表現に一致しない場合、空の配列が返されます。

結果:

extractGroups

入力文字列を与えられた正規表現でマッチさせ、一致の配列の配列を返します。

構文

引数

  • haystack — 入力文字列。 String
  • patternre2正規表現構文 を用いた正規表現。グループを含み、各グループが括弧で囲まれている必要があります。pattern にグループが含まれていない場合は例外がスローされます。 String

返される値

  • 一致の配列の配列。 Array

結果:

extractAllGroupsVertical

haystack 文字列を pattern 正規表現を用いてマッチさせます。すべてのグループからの一致フラグメントを含む配列の配列を返します。フラグメントは、haystack 内での出現順にグループ化されます。

構文

引数

  • haystack — 入力文字列。 String
  • patternre2正規表現構文 を用いた正規表現。グループを含み、各グループが括弧で囲まれている必要があります。pattern にグループが含まれていない場合は例外がスローされます。 String

返される値

  • 一致の配列の配列。 Array
注記

haystackpattern 正規表現に一致しない場合、空の配列が返されます。

結果:

like

文字列 haystack が LIKE 表現 pattern に一致するかどうかを返します。

LIKE 表現には通常の文字と以下のメタシンボルを含めることができます:

  • % は任意の数の任意の文字を示します(ゼロ文字を含む)。
  • _ は任意の1文字を示します。
  • \ はリテラル %_ および \ をエスケープするために使用されます。

一致は UTF-8 に基づいています。たとえば、_ は Unicode コードポイント ¥ に一致し、これは UTF-8 で 2 バイトで表現されます。

haystack または LIKE 表現が有効な UTF-8 でない場合、動作は未定義です。

自動的な Unicode 正規化は行われず、normalizeUTF8*() 関数を使用できます。

リテラルの %_ および \(LIKE メタ文字)に一致させるためには、前にバックスラッシュを追加します:\%\_ および \\。 バックスラッシュが %_ または \ 以外の文字の前に置かれている場合、それは特別な意味を失い(つまり、リテラルとして解釈されます)、ClickHouse では文字列内のバックスラッシュも クオート処理が必要です、したがって実際には \\%\\_ および \\\\ と書く必要があります。

%needle% の形の LIKE 表現では、この関数は position 関数と同じくらい速いです。 他のすべての LIKE 表現は内部的に正規表現に変換され、match 関数に類似したパフォーマンスで実行されます。

構文

エイリアス: haystack LIKE pattern (演算子)

notLike

like のように動作しますが、結果を否定します。

エイリアス: haystack NOT LIKE pattern (演算子)

ilike

like のように動作しますが、大文字と小文字を区別せずに検索します。

エイリアス: haystack ILIKE pattern (演算子)

notILike

ilike のように動作しますが、結果を否定します。

エイリアス: haystack NOT ILIKE pattern (演算子)

ngramDistance

haystack 文字列と needle 文字列の間の 4 グラム距離を計算します。これにより、2 つの 4 グラムの多集合間の対称差をカウントし、その数を両者の基数の合計で正規化します。0 と 1 の間の Float32 を返します。結果が小さいほど、文字列は互いに類似しています。

関数 ngramDistanceCaseInsensitivengramDistanceUTF8ngramDistanceCaseInsensitiveUTF8 はこの関数の大文字と小文字を区別しないおよび/または UTF-8 バリアントを提供します。

構文

パラメータ

返される値

  • 0 と 1 の間の値で、2 つの文字列の類似性を表します。 Float32

実装の詳細

この関数は、定数 needle または haystack 引数が 32Kb より大きい場合に例外をスローします。非定数の haystack または needle 引数が 32Kb より大きい場合、距離は常に 1 になります。

2 つの文字列が互いに類似しているほど、結果は 0 に近づきます(同一)。

クエリ:

結果:

2 つの文字列が互いに類似していないほど、結果は大きくなります。

クエリ:

結果:

ngramDistanceCaseInsensitive

ngramDistance の大文字と小文字を区別しないバリアントを提供します。

構文

パラメータ

返される値

  • 0 と 1 の間の値で、2 つの文字列の類似性を表します。 Float32

ngramDistance では、大文字と小文字の違いが類似性の値に影響します:

クエリ:

結果:

ngramDistanceCaseInsensitive では、大文字と小文字は無視されるため、ケースのみが異なる2つの同一の文字列は、類似性の値が低くなります:

クエリ:

結果:

ngramDistanceUTF8

ngramDistance の UTF-8 バリアントを提供します。needlehaystack 文字列が UTF-8 エンコードされた文字列であると仮定します。

構文

パラメータ

返される値

  • 0 と 1 の間の値で、2 つの文字列の類似性を表します。 Float32

クエリ:

結果:

ngramDistanceCaseInsensitiveUTF8

ngramDistanceUTF8 の大文字と小文字を区別しないバリアントを提供します。

構文

パラメータ

返される値

  • 0 と 1 の間の値で、2 つの文字列の類似性を表します。 Float32

クエリ:

結果:

ngramSearch

ngramDistance のように動作しますが、needle 文字列と haystack 文字列の非対称差を計算します。すなわち、needle からの n-グラムの数を、共通の n-グラム数から引いたものを、needle の n-グラムの数で正規化します。0 と 1 の間の Float32 を返します。結果が大きいほど、needlehaystack に存在する可能性が高くなります。この関数はファジー文字列検索に役立ちます。また、関数 soundex も参照してください。

関数 ngramSearchCaseInsensitivengramSearchUTF8ngramSearchCaseInsensitiveUTF8 はこの関数の大文字と小文字を区別しないおよび/または UTF-8 バリアントを提供します。

構文

パラメータ

返される値

  • needlehaystack に存在する可能性を示す0から1の間の値。 Float32

実装の詳細

注記

UTF-8 バリアントは 3-グラム距離を使用します。これは完全に公正な n-グラム距離ではありません。n-グラムをハッシュ化するために 2 バイトのハッシュを使用し、これらのハッシュテーブル間の(非)対称の差を計算します。衝突が発生する可能性があります。UTF-8 の大文字と小文字を区別しない形式では、公正な tolower 関数を使用していません。1 バイト以上のバイトがある場合は、各コードポイントバイトの 5 番目のビット(0 から始まる)とゼロバイトの最初のビットをゼロにします。これはラテン文字とほとんどすべてのキリル文字に対して機能します。

クエリ:

結果:

ngramSearchCaseInsensitive

ngramSearch の大文字と小文字を区別しないバリアントを提供します。

構文

パラメータ

返される値

  • needlehaystack に存在する可能性を示す0から1の間の値。 Float32

結果が大きいほど、needlehaystack に存在する可能性が高くなります。

クエリ:

結果:

ngramSearchUTF8

ngramSearch の UTF-8 バリアントを提供し、needlehaystack が UTF-8 エンコードされた文字列であることを想定しています。

構文

パラメータ

返される値

  • needlehaystack に存在する可能性を示す0から1の間の値。 Float32

結果が大きいほど、needlehaystack に存在する可能性が高くなります。

クエリ:

結果:

ngramSearchCaseInsensitiveUTF8

ngramSearchUTF8 の大文字と小文字を区別しないバリアントを提供します。

構文

パラメータ

返される値

  • needlehaystack に存在する可能性を示す0から1の間の値。 Float32

結果が大きいほど、needlehaystack に存在する可能性が高くなります。

クエリ:

結果:

countSubstrings

部分文字列 needle が文字列 haystack に出現する回数を返します。

関数 countSubstringsCaseInsensitive および countSubstringsCaseInsensitiveUTF8 はそれぞれ大文字と小文字を区別しないおよび大文字と小文字を区別せず、UTF-8 バリアントを提供します。

構文

引数

  • haystack — 検索が実行される文字列。 文字列 または Enum
  • needle — 検索される部分文字列。 文字列
  • start_pos – 検索が開始される haystack 中の位置(1 から始まります)。 UInt。オプション。

返される値

結果:

start_pos 引数を使用した例:

結果:

countSubstringsCaseInsensitive

部分文字列 needle が文字列 haystack に出現する回数を返します。大文字と小文字を無視します。

構文

引数

  • haystack — 検索が実行される文字列。 文字列 または Enum
  • needle — 検索される部分文字列。 文字列
  • start_pos – 検索が開始される haystack 中の位置(1 から始まります)。 UInt。オプション。

返される値

クエリ:

結果:

start_pos 引数を使用した例:

クエリ:

結果:

countSubstringsCaseInsensitiveUTF8

部分文字列 needle が文字列 haystack に出現する回数を返します。大文字と小文字を無視し、haystack が UTF8 文字列であると仮定します。

構文

引数

  • haystack — 検索が実行される UTF-8 文字列。 文字列 または Enum
  • needle — 検索される部分文字列。 文字列
  • start_pos – 検索が開始される haystack 中の位置(1 から始まります)。 UInt。オプション。

返される値

クエリ:

結果:

start_pos 引数を使用した例:

クエリ:

結果:

countMatches

pattern に対する haystack の正規表現一致の数を返します。

構文

引数

返される値

結果:

結果:

countMatchesCaseInsensitive

haystack に対するパターンの正規表現一致の数を返します。countMatches と同様ですが、一致は大文字と小文字を無視します。

構文

引数

返される値

クエリ:

結果:

regexpExtract

haystack で正規表現パターンに一致する最初の文字列を抽出し、正規表現グループインデックスに対応します。

構文

エイリアス: REGEXP_EXTRACT(haystack, pattern[, index])

引数

  • haystack — 正規表現パターンが一致する文字列。 文字列
  • pattern — 文字列、定数である正規表現。 文字列
  • index – 整数で、0 以上の値でデフォルトは 1。どの正規表現グループを抽出するかを示します。 UInt または Int。オプション。

返される値

pattern は複数の正規表現グループを含む場合があり、index はどの正規表現グループを抽出するかを示します。インデックスが 0 の場合、全体の正規表現に一致します。 文字列

結果:

hasSubsequence

needlehaystack の部分列である場合は 1 を返し、そうでない場合は 0 を返します。 文字列の部分列は、残りの要素の順序を変更することなく、ゼロまたはそれ以上の要素を削除することで与えられた文字列から導出できる列です。

構文

引数

  • haystack — 検索が実行される文字列。 文字列
  • needle — 検索される部分列。 文字列

返される値

  • needle が haystack の部分列である場合は 1、そうでない場合は 0。 UInt8

クエリ:

結果:

hasSubsequenceCaseInsensitive

hasSubsequence のように動作しますが、大文字と小文字を区別せずに検索します。

構文

引数

  • haystack — 検索が実行される文字列。 文字列
  • needle — 検索される部分列。 文字列

返される値

  • needle が haystack の部分列である場合は 1、そうでない場合は 0。 UInt8

クエリ:

結果:

hasSubsequenceUTF8

hasSubsequence のように動作しますが、haystackneedle が UTF-8 エンコードされた文字列であると仮定します。

構文

引数

  • haystack — 検索が実行される文字列。 UTF-8 エンコード 文字列
  • needle — 検索される部分列。 UTF-8 エンコード 文字列

返される値

  • needle が haystack の部分列である場合は 1、そうでない場合は 0。 UInt8

クエリ:

結果:

hasSubsequenceCaseInsensitiveUTF8

hasSubsequenceUTF8 のように動作しますが、大文字と小文字を区別せずに検索します。

構文

引数

  • haystack — 検索が実行される文字列。 UTF-8 エンコード 文字列
  • needle — 検索される部分列。 UTF-8 エンコード 文字列

返される値

  • needle が haystack の部分列である場合は 1、そうでない場合は 0。 UInt8

クエリ:

結果:

hasToken

指定したトークンが haystack に存在する場合は 1 を返し、そうでない場合は 0 を返します。

構文

パラメータ

  • haystack: 検索が実行される文字列。 文字列 または Enum
  • token: 2 つの非アルファベット ASCII 文字の間の最長部分文字列(または haystack の境界)の最大長。

返される値

  • トークンが haystack に存在する場合は 1、そうでない場合は 0。 UInt8

実装の詳細

トークンは定数の文字列である必要があります。tokenbf_v1 インデックスの特殊化でサポートされています。

クエリ:

hasTokenOrNull

指定したトークンが存在する場合は 1 を返し、存在しない場合は 0 を返し、トークンが不正な形式である場合は null を返します。

構文

パラメータ

  • haystack: 検索が実行される文字列。 文字列 または Enum
  • token: 2 つの非アルファベット ASCII 文字の間の最長部分文字列(または haystack の境界)の最大長。

返される値

  • トークンが haystack に存在する場合は 1、トークンが存在しない場合は 0、トークンが不正な形式である場合は null を返します。

実装の詳細

トークンは定数の文字列である必要があります。tokenbf_v1 インデックスの特殊化でサポートされています。

不正な形式のトークンに対して hasToken がエラーをスローする場合、hasTokenOrNull は不正な形式のトークンに対して null を返します。

クエリ:

hasTokenCaseInsensitive

指定したトークンが haystack に存在する場合は 1 を返し、そうでない場合は 0 を返します。大文字と小文字を無視します。

構文

パラメータ

  • haystack: 検索が実行される文字列。 文字列 または Enum
  • token: 2 つの非アルファベット ASCII 文字の間の最長部分文字列(または haystack の境界)の最大長。

返される値

  • トークンが haystack に存在する場合は 1、そうでない場合は 0。 UInt8

実装の詳細

トークンは定数の文字列である必要があります。tokenbf_v1 インデックスの特殊化でサポートされています。

クエリ:

hasTokenCaseInsensitiveOrNull

指定したトークンが haystack に存在する場合は 1 を返し、そうでない場合は 0 を返します。大文字と小文字を無視し、トークンが不正な形式である場合は null を返します。

構文

パラメータ

  • haystack: 検索が実行される文字列。 文字列 または Enum
  • token: 2 つの非アルファベット ASCII 文字の間の最長部分文字列(または haystack の境界)の最大長。

返される値

  • トークンが haystack に存在する場合は 1、トークンが存在しない場合は 0、そうでない場合は null を返します。 UInt8

実装の詳細

トークンは定数の文字列である必要があります。tokenbf_v1 インデックスの特殊化でサポートされています。

不正な形式のトークンに対して hasTokenCaseInsensitive がエラーをスローする場合、hasTokenCaseInsensitiveOrNull は不正な形式のトークンに対して null を返します。

クエリ: