文字列内検索のための関数
このセクションのすべての関数は、デフォルトで大文字と小文字を区別して検索します。大文字小文字を区別しない検索は、通常、別の関数バリアントで提供されています。
大文字小文字を区別しない検索は、英語の小文字・大文字ルールに従います。例えば、英語での大文字の i は I ですが、トルコ語では İ です - 英語以外の言語に対する結果は予期しないものとなる場合があります。
このセクションの関数は、検索対象の文字列(ここでは 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。オプション。
戻り値
部分文字列 needle が空の場合、次のルールが適用されます:
start_posが指定されていない場合:1を返すstart_pos = 0の場合:1を返すstart_pos >= 1かつstart_pos <= length(haystack) + 1の場合:start_posを返す- それ以外の場合:
0を返す
同じルールは、関数 locate、positionCaseInsensitive、positionUTF8 および positionCaseInsensitiveUTF8 にも適用されます。
例
クエリ:
結果:
start_pos 引数を使用した例:
クエリ:
結果:
needle IN haystack 構文の例:
クエリ:
結果:
空の needle 部分文字列の例:
クエリ:
結果:
locate
position と同様ですが、引数 haystack と locate が入れ替わります。
この関数の動作は ClickHouse のバージョンによって依存します:
- v24.3 より前のバージョンでは、
locateは関数positionのエイリアスであり、引数(haystack, needle[, start_pos])を受け入れていました。 - v24.3 以降では、
locateは個別の関数(MySQLとの互換性向上のため)であり、引数(needle, haystack[, start_pos])を受け入れます。以前の動作は、設定 function_locate_has_mysql_compatible_argument_order = false を使用して復元できます。
構文
positionCaseInsensitive
機能 の大文字小文字を区別しないバリアント。
例
クエリ:
結果:
positionUTF8
機能 と同様ですが、haystack と needle がUTF-8エンコードされた文字列であると仮定します。
例
関数 positionUTF8 は、文字 ö(二等点で表される)を単一のUnicodeコードポイントとして正しくカウントします:
クエリ:
結果:
positionCaseInsensitiveUTF8
機能 と同様ですが、大文字小文字を区別せずに検索します。
multiSearchAllPositions
機能 と同様ですが、haystack 文字列内の複数の needle 部分文字列の位置を (バイト単位、1から始まる) 配列として返します。
すべての multiSearch*() 関数は、最大 28 の needles をサポートします。
構文
引数
戻り値
- 部分文字列が見つかった場合、1からカウントしバイト単位の開始位置の配列。
- 部分文字列が見つからなかった場合、0。
例
クエリ:
結果:
multiSearchAllPositionsCaseInsensitive
機能 と同様ですが、大文字小文字を無視します。
構文
引数
戻り値
- 部分文字列が見つかった場合、1からカウントしバイト単位の開始位置の配列。
- 部分文字列が見つからなかった場合、0。
例
クエリ:
結果:
multiSearchAllPositionsUTF8
機能 と同様ですが、haystack と needle 部分文字列がUTF-8エンコードされた文字列であると仮定します。
構文
引数
戻り値
- 部分文字列が見つかった場合、1からカウントしバイト単位の開始位置の配列。
- 部分文字列が見つからなかった場合、0。
例
ClickHouse をUTF-8文字列として与え、C(\x43)および H(\x48)の位置を見つけます。
クエリ:
結果:
multiSearchAllPositionsCaseInsensitiveUTF8
機能 と同様ですが、大文字小文字を無視します。
構文
引数
戻り値
- 部分文字列が見つかった場合、1からカウントしバイト単位の開始位置の配列。
- 部分文字列が見つからなかった場合、0。
例
ClickHouse をUTF-8文字列として与え、c(\x63)および h(\x68)の位置を見つけます。
クエリ:
結果:
multiSearchFirstPosition
position と同様ですが、複数の needle 文字列のどれかに一致する haystack 文字列内の最も左側のオフセットを返します。
関数 multiSearchFirstPositionCaseInsensitive、multiSearchFirstPositionUTF8 および multiSearchFirstPositionCaseInsensitiveUTF8 は、この関数の大文字小文字を区別しないおよび/またはUTF-8バリアントを提供します。
構文
引数
戻り値
- 複数の
needle文字列のいずれかに一致するhaystack文字列内の最も左側のオフセット。 - 一致がなかった場合、0。
例
クエリ:
結果:
multiSearchFirstPositionCaseInsensitive
multiSearchFirstPosition と同様ですが、大文字小文字を無視します。
構文
引数
戻り値
- 複数の
needle文字列のいずれかに一致するhaystack文字列内の最も左側のオフセット。 - 一致がなかった場合、0。
例
クエリ:
結果:
multiSearchFirstPositionUTF8
multiSearchFirstPosition と同様ですが、haystack と needle がUTF-8文字列であると仮定します。
構文
引数
戻り値
- 複数の
needle文字列のいずれかに一致するhaystack文字列内の最も左側のオフセット。 - 一致がなかった場合、0。
例
UTF-8文字列 hello world 内の、与えられたneedleに一致する最も左側のオフセットを見つけます。
クエリ:
結果:
multiSearchFirstPositionCaseInsensitiveUTF8
multiSearchFirstPosition と同様ですが、haystack と needle がUTF-8文字列であり、大文字小文字を無視します。
構文
引数
戻り値
- 複数の
needle文字列のいずれかに一致するhaystack文字列内の最も左側のオフセット(大文字小文字を無視)。 - 一致がなかった場合、0。
例
UTF-8文字列 HELLO WORLD 内の、与えられたneedleに一致する最も左側のオフセットを見つけます。
クエリ:
結果:
multiSearchFirstIndex
haystack 文字列内の最も左側に見つかった needle<sub>i</sub> のインデックス i(1から開始)を返し、それ以外の場合は 0 を返します。
関数 multiSearchFirstIndexCaseInsensitive、multiSearchFirstIndexUTF8 および multiSearchFirstIndexCaseInsensitiveUTF8 は、この関数の大文字小文字を区別しないおよび/またはUTF-8バリアントを提供します。
構文
引数
戻り値
- 最も左側に見つかった
needleのインデックス(1から開始)。一致がなかった場合は 0。 UInt8。
例
クエリ:
結果:
multiSearchFirstIndexCaseInsensitive
haystack 文字列内の最も左側に見つかった needle<sub>i</sub> のインデックス i(1から開始)を返し、それ以外の場合は 0 を返します。大文字小文字を無視します。
構文
引数
戻り値
- 最も左側に見つかった
needleのインデックス(1から開始)。一致がなかった場合は 0。 UInt8。
例
クエリ:
結果:
multiSearchFirstIndexUTF8
haystack 文字列内の最も左側に見つかった needle<sub>i</sub> のインデックス i(1から開始)を返し、それ以外の場合は 0 を返します。haystack と needle がUTF-8エンコードされた文字列であると仮定します。
構文
引数
戻り値
- 最も左側に見つかった
needleのインデックス(1から開始)。一致がなかった場合は 0。 UInt8。
例
Hello World をUTF-8文字列として与え、UTF-8文字列 Hello と World の最初のインデックスを見つけます。
クエリ:
結果:
multiSearchFirstIndexCaseInsensitiveUTF8
haystack 文字列内の最も左側に見つかった needle<sub>i</sub> のインデックス i(1から開始)を返し、それ以外の場合は 0 を返します。haystack と needle がUTF-8エンコードされた文字列であると仮定します。大文字小文字を無視します。
構文
引数
戻り値
- 最も左側に見つかった
needleのインデックス(1から開始)。一致がなかった場合は 0。 UInt8。
例
HELLO WORLD をUTF-8文字列として与え、UTF-8文字列 hello と world の最初のインデックスを見つけます。
クエリ:
結果:
multiSearchAny
文字列 haystack に対して、少なくとも1つの文字列 needle<sub>i</sub> が一致する場合は1を返し、それ以外の場合は0を返します。
関数 multiSearchAnyCaseInsensitive、multiSearchAnyUTF8 および multiSearchAnyCaseInsensitiveUTF8 は、この関数の大文字小文字を区別しないおよび/またはUTF-8バリアントを提供します。
構文
引数
戻り値
- 一致があった場合は1。
- 一致がなかった場合は0。
例
クエリ:
結果:
multiSearchAnyCaseInsensitive
機能 と同様ですが、大文字小文字を無視します。
構文
引数
戻り値
- 大文字小文字を無視した一致があった場合は1。
- 一致がなかった場合は0。
例
クエリ:
結果:
multiSearchAnyUTF8
機能 と同様ですが、haystack と needle の部分文字列がUTF-8エンコードされた文字列であると仮定します。
構文
引数
戻り値
- 一致があった場合は1。
- 一致がなかった場合は0。
例
ClickHouse をUTF-8文字列として与え、単語内に C('\x43')または H('\x48')の文字があるかどうかを確認します。
クエリ:
結果:
multiSearchAnyCaseInsensitiveUTF8
機能 と同様ですが、大文字小文字を無視します。
構文
引数
戻り値
- 大文字小文字を無視した一致があった場合は1。
- 一致がなかった場合は0。
例
ClickHouse をUTF-8文字列として与え、単語内に h('\x68')の文字があるかどうかを確認します(ケースを無視します)。
クエリ:
結果:
hasAnyTokens
この関数は、設定 allow_experimental_full_text_index が有効な場合にのみ使用できます。
文字列 input 列に対して、少なくとも1つの文字列 needle<sub>i</sub> が一致する場合は1を返し、それ以外の場合は0を返します。
構文
引数
input— 入力列。 String または FixedString。needles— 検索されるトークン。最大64トークンをサポートします。 Array(String)。
列 input は [テキストインデックス][../../engines/table-engines/mergetree-family/invertedindexes.md] を持っている必要があります。
input 文字列は、インデックス定義のトークナイザーによってトークン化されます。
各 needle 配列要素トークンi は、単一のトークンと見なされ、さらなるトークン化は行われません。
例えば、tokenizer = ngrams(5) のインデックスで ClickHouse を検索したい場合、以下のようなトークンを提供します:['Click', 'lickH', 'ickHo', 'ckHou', 'kHous', 'House']。
トークンを生成するには、tokens 関数を使用できます。
重複トークンは無視されます。例えば ['ClickHouse', 'ClickHouse'] は ['ClickHouse'] と同じです。
戻り値
- 一致があった場合は1。
- 一致がなかった場合は0。
例
クエリ:
結果:
tokens 関数を使用してトークンを生成
クエリ:
結果:
hasAllTokens
この関数は、設定 allow_experimental_full_text_index が有効な場合にのみ使用できます。
hasAnyTokens と同様ですが、すべての文字列 needle<sub>i</sub> が input 列に一致する場合のみ1を返し、それ以外の場合は0を返します。
構文
引数
input— 入力列。 String または FixedString。needles— 検索されるトークン。最大64トークンをサポートします。 Array(String)。
列 input は [テキストインデックス][../../engines/table-engines/mergetree-family/invertedindexes.md] を持っている必要があります。
input 文字列は、インデックス定義のトークナイザーによってトークン化されます。
各 needle 配列要素トークンi は、単一のトークンと見なされ、さらなるトークン化は行われません。
例えば、tokenizer = ngrams(5) のインデックスで ClickHouse を検索したい場合、以下のようなトークンを提供します:['Click', 'lickH', 'ickHo', 'ckHou', 'kHous', 'House']。
トークンを生成するには、tokens 関数を使用できます。
重複トークンは無視されます。例えば ['ClickHouse', 'ClickHouse'] は ['ClickHouse'] と同じです。
戻り値
- すべてのトークンが一致した場合は1。
- 一致しなかった場合は0。
例
クエリ:
結果:
tokens 関数を使用してトークンを生成
クエリ:
結果:
match
文字列 haystack が正規表現 pattern に一致するかどうかを返します。これは re2 正規表現構文 に従います。
マッチングはUTF-8に基づいています。例として、. は二バイトで表現されるUnicodeコードポイント ¥ に一致します。正規表現にはヌルバイトを含めてはいけません。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)攻撃に脆弱であるため、提供されるパターンを慎重に確認することをお勧めします。
文字列内の複数の部分文字列を検索したい場合は、multiSearchAny 関数を使用することができます - これはこの関数よりもはるかに高速です。
構文
multiMatchAnyIndex
multiMatchAny と同様ですが、haystack に一致する任意のインデックスを返します。
構文
multiMatchAllIndices
multiMatchAny と同様ですが、haystack に一致するすべてのインデックスの配列を返します。
構文
multiFuzzyMatchAny
multiMatchAny と同様ですが、常に一定の 編集距離 内で haystack に一致する場合は1を返します。この関数は hyperscan ライブラリの実験機能に依存しており、一部のコーナーケースでは遅くなることがあります。パフォーマンスは編集距離の値やパターンによって異なりますが、常に非ファジー系のバリアントよりもコストがかかります。
multiFuzzyMatch*() 系の関数は、ハイパースキャンの制限により、UTF-8正規表現をサポートしていません(バイト列として扱われます)。
構文
multiFuzzyMatchAnyIndex
multiFuzzyMatchAny と同様ですが、一定の編集距離内で haystack に一致する任意のインデックスを返します。
構文
multiFuzzyMatchAllIndices
multiFuzzyMatchAny と同様ですが、一定の編集距離内で haystack に一致するすべてのインデックスの配列を返します。
構文
extract
文字列内の正規表現の最初の一致を返します。
haystack が pattern 正規表現に一致しない場合、空の文字列が返されます。
正規表現にキャプチャグループがある場合、関数は入力文字列を最初のキャプチャグループに対してマッチさせます。
構文
引数
haystack— 入力文字列。 String。pattern— re2 正規表現構文 の正規表現。
戻り値
haystack文字列内の正規表現の最初の一致。 String。
例
クエリ:
結果:
extractAll
文字列内の正規表現のすべての一致を配列として返します。haystack が pattern 正規表現に一致しない場合、空の文字列が返されます。
サブパターンに関する動作は、関数 extract と同じです。
構文
引数
haystack— 入力文字列。 String。pattern— re2 正規表現構文 の正規表現。
戻り値
例
クエリ:
結果:
extractAllGroupsHorizontal
haystack 文字列のすべてのグループを pattern 正規表現を使用してマッチさせます。最初の配列には最初のグループに一致するすべてのフラグメントが含まれ、次の配列には2番目のグループに一致するものが含まれます。
この関数は extractAllGroupsVertical より遅いです。
構文
引数
haystack— 入力文字列。 String。pattern— re2 正規表現構文 の正規表現。グループを含む必要があり、各グループは括弧で囲まれます。patternにグループが含まれていない場合、例外がスローされます。 String。
戻り値
- 一致の配列の配列。 Array。
haystack が pattern 正規表現に一致しない場合、空の配列が返されます。
例
結果:
extractGroups
与えられた入力文字列を与えられた正規表現とマッチさせ、マッチの配列の配列を返します。
構文
引数
haystack— 入力文字列。 String。pattern— re2 正規表現構文 の正規表現。グループを含む必要があり、各グループは括弧で囲まれます。patternにグループが含まれていない場合、例外がスローされます。 String。
戻り値
- 一致の配列の配列。 Array。
例
結果:
extractAllGroupsVertical
haystack 文字列のすべてのグループを pattern 正規表現を使用してマッチさせます。すべてのグループからの一致フラグメントを含む各配列を返します。フラグメントは haystack 内での出現順にグループ化されます。
構文
引数
haystack— 入力文字列。 String。pattern— re2 正規表現構文 の正規表現。グループを含む必要があり、各グループは括弧で囲まれます。patternにグループが含まれていない場合、例外がスローされます。 String。
戻り値
- 一致の配列の配列。 Array。
haystack が pattern 正規表現に一致しない場合、空の配列が返されます。
例
結果:
like
文字列 haystack が LIKE 式 pattern に一致するかどうかを返します。
LIKE 式には通常の文字と次のメタシンボルを含めることができます:
%は任意の数の任意の文字(ゼロ文字を含む)を示します。_は任意の1文字を示します。\はリテラル%、_および\をエスケープするためのものです。
マッチングはUTF-8に基づいています。例として、_ は二バイトで表現されるUnicodeコードポイント ¥ に一致します。
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 の値を返します。結果が小さいほど、文字列は互いに似ています。
関数 ngramDistanceCaseInsensitive、ngramDistanceUTF8、ngramDistanceCaseInsensitiveUTF8 は、大文字小文字を区別しないおよび/またはUTF-8のバリアントを提供します。
構文
引数
haystack: 最初の比較文字列。 String literalneedle: 2番目の比較文字列。 String literal
戻り値
- 2つの文字列間の類似性を示す 0 から 1 の間の値。 Float32
実装の詳細
この関数は、定数 needle または haystack 引数が32Kbを超えた場合、例外をスローします。もし任意の非定数 haystack か needle 引数が32Kbを超えている場合、距離は常に1になります。
例
2つの文字列が互いに似ているほど、結果は0に近づきます(同一)。
クエリ:
結果:
2つの文字列が互いに似ていないほど、結果は大きくなります。 クエリ:
結果:
ngramDistanceCaseInsensitive
ngramDistance の大文字小文字を区別しないバリアントを提供します。
構文
引数
haystack: 最初の比較文字列。 String literalneedle: 2番目の比較文字列。 String literal
戻り値
- 2つの文字列間の類似性を示す 0 から 1 の間の値。 Float32
例
ngramDistance では、大文字小文字の違いが類似性値に影響を与えます:
クエリ:
結果:
ngramDistanceCaseInsensitive では大文字小文字が無視されるため、大文字小文字のみの違いがある2つの同一の文字列は、低い類似性値を返します:
クエリ:
結果:
ngramDistanceUTF8
提供するのは、ngramDistanceのUTF-8バリアントです。needleとhaystackの文字列はUTF-8エンコーディングされた文字列であると仮定します。
構文
パラメータ
返される値
- 0から1の値で、2つの文字列の類似度を表します。Float32
例
クエリ:
結果:
ngramDistanceCaseInsensitiveUTF8
提供するのは、ngramDistanceUTF8の大文字小文字を区別しないバリアントです。
構文
パラメータ
返される値
- 0から1の値で、2つの文字列の類似度を表します。Float32
例
クエリ:
結果:
ngramSearch
ngramDistanceと似ていますが、needle文字列とhaystack文字列の非対称差を計算します。すなわち、needleのn-グラム数から共通のn-グラム数を引き、needleのn-グラム数で正規化したものです。0から1の間のFloat32を返します。結果が大きいほど、needleはhaystackに含まれる可能性が高くなります。この関数はファジー文字列検索に役立ちます。関数soundexも参照してください。
関数ngramSearchCaseInsensitive、ngramSearchUTF8、ngramSearchCaseInsensitiveUTF8は、この関数の大文字小文字を区別しないおよび/またはUTF-8バリアントを提供します。
構文
パラメータ
返される値
needleがhaystackに含まれる可能性を示す0から1の値。Float32
実装の詳細
UTF-8バリアントは3-グラム距離を使用します。これらは完全には公平なn-グラム距離ではありません。n-グラムをハッシュ化するために2バイトハッシュを使用し、これらのハッシュテーブル間の(非)対称差を計算します – 衝突が発生する可能性があります。UTF-8大文字小文字を区別しない形式では公平なtolower関数を使用しておらず、各コードポイントバイトの5番目のビットをゼロにし、バイトが1以上の場合は最初のバイトの最初のビットをゼロにします – これはラテン文字およびほぼすべてのキリル文字に対して機能します。
例
クエリ:
結果:
ngramSearchCaseInsensitive
提供するのは、ngramSearchの大文字小文字を区別しないバリアントです。
構文
パラメータ
返される値
needleがhaystackに含まれる可能性を示す0から1の値。Float32
結果が大きいほど、needleはhaystackに含まれる可能性が高くなります。
例
クエリ:
結果:
ngramSearchUTF8
提供するのは、ngramSearchのUTF-8バリアントで、needleとhaystackはUTF-8エンコーディングされた文字列であると仮定します。
構文
パラメータ
返される値
needleがhaystackに含まれる可能性を示す0から1の値。Float32
結果が大きいほど、needleはhaystackに含まれる可能性が高くなります。
例
クエリ:
結果:
ngramSearchCaseInsensitiveUTF8
提供するのは、ngramSearchUTF8の大文字小文字を区別しないバリアントです。
構文
パラメータ
返される値
needleがhaystackに含まれる可能性を示す0から1の値。Float32
結果が大きいほど、needleはhaystackに含まれる可能性が高くなります。
例
クエリ:
結果:
countSubstrings
needleという部分文字列がhaystackという文字列に何回出現するかを返します。
関数countSubstringsCaseInsensitiveおよびcountSubstringsCaseInsensitiveUTF8は、それぞれ大文字小文字を区別しないおよび大文字小文字を区別しない + UTF-8バリアントを提供します。
構文
引数
haystack— 検索が行われる文字列。文字列または列挙型。needle— 検索される部分文字列。文字列。start_pos– 検索が開始されるhaystack内の位置(1から始まる)。UInt。オプション。
返される値
- 出現回数。UInt64。
例
結果:
start_pos引数を使った例:
結果:
countSubstringsCaseInsensitive
needleという部分文字列がhaystackという文字列に何回出現するかを返します。大文字小文字を無視します。
構文
引数
haystack— 検索が行われる文字列。文字列または列挙型。needle— 検索される部分文字列。文字列。start_pos– 検索が開始されるhaystack内の位置(1から始まる)。UInt。オプション。
返される値
- 出現回数。UInt64。
例
クエリ:
結果:
start_pos引数を使った例:
クエリ:
結果:
countSubstringsCaseInsensitiveUTF8
needleという部分文字列がhaystackという文字列に何回出現するかを返します。大文字小文字を無視し、haystackはUTF8文字列であると仮定します。
構文
引数
haystack— 検索が行われるUTF-8文字列。文字列または列挙型。needle— 検索される部分文字列。文字列。start_pos– 検索が開始されるhaystack内の位置(1から始まる)。UInt。オプション。
返される値
- 出現回数。UInt64。
例
クエリ:
結果:
start_pos引数を使った例:
クエリ:
結果:
countMatches
haystack内のpatternに対する正規表現マッチの数を返します。
この関数の動作はClickHouseのバージョンによって異なります:
- バージョン < v25.6では、
countMatchesは、パターンが受け入れる場合でも、最初の空のマッチでカウントを停止します。 - バージョン >= 25.6では、
countMatchesは空のマッチが発生した場合でも実行を続けます。 旧作の動作は設定count_matches_stop_at_empty_match = trueを使用して復元できます。
構文
引数
返される値
- マッチの数。UInt64。
例
結果:
結果:
countMatchesCaseInsensitive
haystack内のパターンに対する正規表現マッチの数を返します。countMatchesと同様ですが、大文字小文字を無視します。
構文
引数
返される値
- マッチの数。UInt64。
例
クエリ:
結果:
regexpExtract
haystack内で正規表現パターンと一致する最初の文字列を抽出し、正規表現グループインデックスに対応します。
構文
エイリアス: REGEXP_EXTRACT(haystack, pattern[, index])。
引数
haystack— 正規表現パターンが一致する文字列。文字列。pattern— 文字列、正規表現式で、定数でなければなりません。文字列。index– 0以上の整数で、デフォルトは1です。抽出する正規表現グループを表します。UIntまたはInt。オプション。
返される値
patternは複数の正規表現グループを含む場合があり、indexは抽出する正規表現グループを示します。インデックスが0の場合は、全体の正規表現との一致を意味します。文字列。
例
結果:
hasSubsequence
needleがhaystackの部分列である場合は1を返し、そうでない場合は0を返します。
文字列の部分列とは、与えられた文字列から0個以上の要素を削除しても順序が変わらない、得られるシーケンスのことです。
構文
引数
返される値
needleがhaystackの部分列である場合は1、そうでない場合は0。UInt8。
例
クエリ:
結果:
hasSubsequenceCaseInsensitive
hasSubsequenceと同様ですが、大文字小文字を無視して検索します。
構文
引数
返される値
needleがhaystackの部分列である場合は1、そうでない場合は0。UInt8。
例
クエリ:
結果:
hasSubsequenceUTF8
hasSubsequenceと同様ですが、haystackとneedleが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に存在する場合は1、そうでない場合は0。UInt8。
実装の詳細
トークンは定数の文字列でなければなりません。tokenbf_v1インデックスの特化がサポートされています。
例
クエリ:
hasTokenOrNull
指定されたトークンが存在する場合は1を返し、存在しない場合は0を返し、トークンが不正な形式の場合はnullを返します。
構文
パラメータ
返される値
- トークンがhaystackに存在する場合は1、そうでない場合は0、不正なトークンの場合はnullを返します。
実装の詳細
トークンは定数の文字列でなければなりません。tokenbf_v1インデックスの特化がサポートされています。
例
hasTokenが不正なトークンに対してエラーをスローする場合、hasTokenOrNullは不正なトークンに対してnullを返します。
クエリ:
hasTokenCaseInsensitive
指定されたトークンがhaystackに存在する場合は1を返し、そうでない場合は0を返します。大文字小文字を無視します。
構文
パラメータ
返される値
- トークンがhaystackに存在する場合は1、そうでない場合は0。UInt8。
実装の詳細
トークンは定数の文字列でなければなりません。tokenbf_v1インデックスの特化がサポートされています。
例
クエリ:
hasTokenCaseInsensitiveOrNull
指定されたトークンがhaystackに存在する場合は1を返し、そうでない場合は0を返します。大文字小文字を無視し、不正なトークンの場合はnullを返します。
構文
パラメータ
返される値
実装の詳細
トークンは定数の文字列でなければなりません。tokenbf_v1インデックスの特化がサポートされています。
例
hasTokenCaseInsensitiveが不正なトークンに対してエラーをスローする場合、hasTokenCaseInsensitiveOrNullは不正なトークンに対してnullを返します。
クエリ: