文字列内の検索に関する関数
このセクションのすべての関数は、デフォルトで大文字小文字を区別して検索します。大文字小文字を区別しない検索は、通常、別の関数のバリアントで提供されます。
大文字小文字を区別しない検索は、英語の小文字-大文字のルールに従います。例えば、英語では大文字の 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
position の大文字小文字を区別しないバリアントです。
例
クエリ:
結果:
positionUTF8
position と似ていますが、haystack
と needle
が UTF-8 エンコードされた文字列であると仮定します。
例
関数 positionUTF8
は文字 ö
(2つの点で表現される)を単一のUnicodeコードポイントとして正しくカウントします。
クエリ:
結果:
positionCaseInsensitiveUTF8
positionUTF8 と同様ですが、大文字小文字を区別しない検索を行います。
multiSearchAllPositions
position と似ていますが、haystack
文字列の中で複数の needle
部分文字列の位置(バイト単位、1から始まる)の配列を返します。
すべての multiSearch*()
関数は、最大で 28 の needle をサポートします。
構文
引数
返される値
- 部分文字列が見つかった場合のバイト数での開始位置の配列(1から数えます)。
- 部分文字列が見つからなかった場合は 0。
例
クエリ:
結果:
multiSearchAllPositionsCaseInsensitive
multiSearchAllPositions と同様ですが、大文字小文字を無視します。
構文
引数
返される値
- 部分文字列が見つかった場合のバイト数での開始位置の配列(1から数えます)。
- 部分文字列が見つからなかった場合は 0。
例
クエリ:
結果:
multiSearchAllPositionsUTF8
multiSearchAllPositions と同様ですが、haystack
と needle
部分文字列が UTF-8 エンコードされた文字列であると仮定します。
構文
引数
返される値
- 部分文字列が見つかった場合のバイト数での開始位置の配列(1から数えます)。
- 部分文字列が見つからなかった場合は 0。
例
ClickHouse
を UTF-8 文字列として、C
(\x43
)と H
(\x48
)の位置を見つけます。
クエリ:
結果:
multiSearchAllPositionsCaseInsensitiveUTF8
multiSearchAllPositionsUTF8 と同様ですが、大文字小文字を無視します。
構文
引数
返される値
- 部分文字列が見つかった場合のバイト数での開始位置の配列(1から数えます)。
- 部分文字列が見つからなかった場合は 0。
例
ClickHouse
を UTF-8 文字列として、c
(\x63
)と h
(\x68
)の位置を見つけます。
クエリ:
結果:
multiSearchFirstPosition
position
に似ていますが、haystack
文字列内で、複数の needle
文字列のいずれかに一致する最左オフセットを返します。
関数 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
左側の見つかった needlei のインデックス i
(1から始まる)を返し、見つからなかった場合は 0 を返します。
関数 multiSearchFirstIndexCaseInsensitive
、multiSearchFirstIndexUTF8
と multiSearchFirstIndexCaseInsensitiveUTF8
は、大文字小文字を無視するおよび/または UTF-8 バリアントを提供します。
構文
引数
返される値
- 左側の見つかった needle のインデックス(1から始まる)。見つからなかった場合は 0。UInt8。
例
クエリ:
結果:
multiSearchFirstIndexCaseInsensitive
見つかった最左の needlei のインデックス i
(1から始まる)を返し、見つからなかった場合は 0 を返します。大文字小文字を無視します。
構文
引数
返される値
- 左側の見つかった needle のインデックス(1から始まる)。見つからなかった場合は 0。UInt8。
例
クエリ:
結果:
multiSearchFirstIndexUTF8
見つかった最左の needlei のインデックス i
(1から始まる)を返し、見つからなかった場合は 0 を返します。haystack
と needle
が UTF-8 エンコードされた文字列であると仮定します。
構文
引数
返される値
- 左側の見つかった needle のインデックス(1から始まる)。見つからなかった場合は 0。UInt8。
例
UTF-8 文字列 Hello World
において、UTF-8 文字列 Hello
と World
の最初のインデックスを見つけます。
クエリ:
結果:
multiSearchFirstIndexCaseInsensitiveUTF8
見つかった最左の needlei のインデックス i
(1から始まる)を返し、見つからなかった場合は 0 を返します。haystack
と needle
が UTF-8 エンコードされた文字列であると仮定します。大文字小文字を無視します。
構文
引数
返される値
- 左側の見つかった needle のインデックス(1から始まる)。見つからなかった場合は 0。UInt8。
例
UTF-8 文字列 HELLO WORLD
において、UTF-8 文字列 hello
と world
の最初のインデックスを見つけます。
クエリ:
結果:
multiSearchAny
文字列 haystack
が少なくとも1つの文字列 needlei に一致する場合は 1 を返し、そうでなければ 0 を返します。
関数 multiSearchAnyCaseInsensitive
、multiSearchAnyUTF8
および multiSearchAnyCaseInsensitiveUTF8
は、大文字小文字を無視したおよび/または UTF-8 バリアントを提供します。
構文
引数
返される値
- 一致が少なくとも1つあった場合は 1。
- 一致がなかった場合は 0。
例
クエリ:
結果:
multiSearchAnyCaseInsensitive
multiSearchAny と同様ですが、大文字小文字を無視します。
構文
引数
返される値
- 一致が少なくとも1つあった場合は 1。
- 一致がなかった場合は 0。
例
クエリ:
結果:
multiSearchAnyUTF8
multiSearchAny と同様ですが、haystack
および needle
部分文字列が UTF-8 エンコードされた文字列であると仮定します。
構文
引数
返される値
- 一致が少なくとも1つあった場合は 1。
- 一致がなかった場合は 0。
例
ClickHouse
を UTF-8 文字列として、C
(\x43
)または H
(\x48
)の文字が単語に含まれているかを確認します。
クエリ:
結果:
multiSearchAnyCaseInsensitiveUTF8
multiSearchAnyUTF8 と同様ですが、大文字小文字を無視します。
構文
引数
返される値
- 一致が少なくとも1つあった場合は 1。
- 一致がなかった場合は 0。
例
ClickHouse
を UTF-8 文字列として、大文字小文字を無視して、単語に h
(\x68
)の文字が含まれているかを確認します。
クエリ:
結果:
match
文字列 haystack
が正規表現 pattern
に re2 正規表現構文 に従って一致するかどうかを返します。
一致はUTF-8に基づいています。例えば、.
はUnicodeコードポイント ¥
に一致し、これはUTF-8で2バイトで表されます。正規表現にはヌルバイトを含めることはできません。もし haystack
または pattern
が無効なUTF-8の場合、その動作は未定義となります。
re2 のデフォルトの動作とは異なり、.
は改行に一致します。これを無効にするには、パターンの先頭に (?-s)
を付けてください。
文字列中の部分文字列のみを検索したい場合は、関数 like か position を代わりに使用できます。これらはこの関数よりも遥かに速く動作します。
構文
エイリアス: haystack REGEXP pattern operator
multiMatchAny
match
と同様ですが、パターンのいずれかが一致する場合は 1 を返し、そうでなければ 0 を返します。
multi[Fuzzy]Match*()
ファミリーの関数は、(Vectorscan)[https://github.com/VectorCamp/vectorscan] ライブラリを使用します。したがって、ClickHouse がベクトルスキャンに対応してコンパイルされている場合にのみ有効です。
ハイパースキャンを使用するすべての関数をオフにするには、設定 SET allow_hyperscan = 0;
を使用します。
ベクトルスキャンの制約により、haystack
文字列の長さは 232 バイト未満でなければなりません。
ハイパースキャンは、一般に、正規表現サービス拒否攻撃(ReDoS)に対して脆弱です(例えば、(here)[https://www.usenix.org/conference/usenixsecurity22/presentation/turonova]、(here)[https://doi.org/10.1007/s10664-021-10033-1] および (here)[https://doi.org/10.1145/3236024.3236027] を参照)。ユーザーは提供されたパターンを注意深く確認することをお勧めします。
文字列中の複数の部分文字列を検索したい場合は、関数 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
pattern
正規表現を使用して haystack
文字列のすべてのグループに一致します。最初の配列には最初のグループに一致するすべてのフラグメントが含まれ、第二の配列には第二のグループに一致するフラグメントが含まれます。
この関数は extractAllGroupsVertical よりも遅くなります。
構文
引数
haystack
— 入力文字列。String。pattern
— re2 正規表現構文 に従った正規表現。グループを含む必要があり、各グループは括弧で囲まれます。pattern
にグループが含まれていない場合、例外がスローされます。String。
返される値
- 一致する配列の配列。Array。
もし haystack
が pattern
正規表現に一致しない場合、空の配列の配列が返されます。
例
結果:
extractGroups
入力文字列を指定した正規表現に一致させ、マッチの配列の配列を返します。
構文
引数
haystack
— 入力文字列。String。pattern
— re2 正規表現構文 に従った正規表現。グループを含む必要があり、各グループは括弧で囲まれます。pattern
にグループが含まれていない場合、例外がスローされます。String。
返される値
- 一致する配列の配列。Array。
例
結果:
extractAllGroupsVertical
pattern
正規表現を使用して haystack
文字列のすべてのグループに一致します。配列は、各グループからの一致したフラグメントを含む配列の配列を返します。フラグメントは haystack
内の出現順にグループ化されます。
構文
引数
haystack
— 入力文字列。String。pattern
— re2 正規表現構文 に従った正規表現。グループを含む必要があり、各グループは括弧で囲まれます。pattern
にグループが含まれていない場合、例外がスローされます。String。
返される値
- 一致する配列の配列。Array。
もし haystack
が pattern
正規表現に一致しない場合、空の配列が返されます。
例
結果:
like
文字列 haystack
が LIKE 式 pattern
と一致するかどうかを返します。
LIKE 式は通常の文字と次のメタシンボルを含むことができます。
%
は任意の数の任意の文字(ゼロ文字を含む)を示します。_
は任意の1文字を示します。\
はリテラル%
、_
および\
をエスケープするためのものです。
一致は UTF-8 に基づいており、たとえば、_
は UTF-8 で2バイトで表現される 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-gram 距離を計算します。このために、2 つの 4-grams の多集合の対称差を数え、それらの基数の合計で正規化します。0 と 1 の間のFloat32を返します。結果が小さいほど、文字列は互いに類似しています。
関数 ngramDistanceCaseInsensitive
、ngramDistanceUTF8
、ngramDistanceCaseInsensitiveUTF8
は、この関数の大文字と小文字を区別しないおよび/または UTF-8 バリアントを提供します。
構文
パラメータ
返される値
- 2 つの文字列の類似性を表す 0 と 1 の間の値。Float32
実装の詳細
この関数は、定数 needle
または haystack
引数が 32Kb を超えるサイズの場合に例外をスローします。非定数の haystack
または needle
引数が 32Kb を超えるサイズの場合、距離は常に 1 になります。
例
2 つの文字列が互いにより類似しているほど、結果は 0(同一)に近づきます。
クエリ:
結果:
2 つの文字列が互いにあまり類似していないほど、結果は大きくなります。
クエリ:
結果:
ngramDistanceCaseInsensitive
ngramDistance の大文字と小文字を区別しないバリアントを提供します。
構文
パラメータ
返される値
- 2 つの文字列の類似性を表す 0 と 1 の間の値。Float32
例
ngramDistance では、大文字と小文字の違いが類似性の値に影響します。
クエリ:
結果:
ngramDistanceCaseInsensitive では、大文字と小文字は無視されるため、ケースが異なる同一の文字列は低い類似性の値を返します。
クエリ:
結果:
ngramDistanceUTF8
ngramDistance の UTF-8 バリアントを提供します。 needle
と haystack
の文字列は UTF-8 でエンコードされていると仮定します。
構文
パラメータ
返される値
- 2 つの文字列の類似性を表す 0 と 1 の間の値。Float32
例
クエリ:
結果:
ngramDistanceCaseInsensitiveUTF8
ngramDistanceUTF8 の大文字と小文字を区別しないバリアントを提供します。
構文
パラメータ
返される値
- 2 つの文字列の類似性を表す 0 と 1 の間の値。Float32
例
クエリ:
結果:
ngramSearch
ngramDistance
と同様ですが、needle
文字列と haystack
文字列の非対称差を計算します。つまり、needle からの n-gram の数から共通の n-gram の数を引き、needle
の n-gram の数で正規化します。0 と 1 の間のFloat32を返します。結果が大きいほど、needle
が haystack
に含まれる可能性が高くなります。この関数は、ファジー文字列検索に便利です。また、関数 soundex
も参照してください。
関数 ngramSearchCaseInsensitive
、ngramSearchUTF8
、ngramSearchCaseInsensitiveUTF8
は、この関数の大文字と小文字を区別しないおよび/または UTF-8 バリアントを提供します。
構文
パラメータ
返される値
needle
がhaystack
に含まれる可能性を表す 0 と 1 の間の値。Float32
実装の詳細
UTF-8 バリアントは 3-gram 距離を使用します。これは完全に公正な n-gram 距離ではありません。n-gram をハッシュするために 2 バイトのハッシュを使用し、その後、これらのハッシュテーブル間の(非)対称差を計算します – 衝突が発生する可能性があります。UTF-8 大文字と小文字を区別しない形式では、公正な tolower
関数を使用せず、各コードポイントバイトの 5 番目のビット(0 から始まる)をゼロにし、バイトが複数の場合には 0 番目のバイトの最初のビットをゼロにします – これはラテン文字および主にすべてのキリル文字に対して機能します。
例
クエリ:
結果:
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
— 検索が実行される文字列。文字列 または Enum。needle
— 検索される部分文字列。文字列。start_pos
– 検索が開始されるhaystack
内の位置(1から始まる)。UInt。オプション。
返される値
- 出現回数。UInt64。
例
結果:
start_pos
引数を使用した例:
結果:
countSubstringsCaseInsensitive
部分文字列 needle
が文字列 haystack
に何回出現するかを返します。大文字と小文字は無視します。
構文
引数
haystack
— 検索が実行される文字列。文字列 または Enum。needle
— 検索される部分文字列。文字列。start_pos
– 検索が開始されるhaystack
内の位置(1から始まる)。UInt。オプション。
返される値
- 出現回数。UInt64。
例
クエリ:
結果:
start_pos
引数を使用した例:
クエリ:
結果:
countSubstringsCaseInsensitiveUTF8
部分文字列 needle
が文字列 haystack
に何回出現するかを返します。大文字と小文字は無視し、haystack
が UTF8 文字列であると仮定します。
構文
引数
haystack
— 検索が実行される UTF-8 文字列。文字列 または Enum。needle
— 検索される部分文字列。文字列。start_pos
– 検索が開始されるhaystack
内の位置(1から始まる)。UInt。オプション。
返される値
- 出現回数。UInt64。
例
クエリ:
結果:
start_pos
引数を使用した例:
クエリ:
結果:
countMatches
pattern
が haystack
に何回正規表現に一致するかを返します。
構文
引数
haystack
— 検索対象の文字列。文字列。pattern
— re2 正規表現構文 に基づく正規表現。文字列。
返される値
- 一致の回数。UInt64。
例
結果:
結果:
countMatchesCaseInsensitive
countMatches
と同様ですが、パターンが大文字と小文字を区別しない一致を無視します。
構文
引数
haystack
— 検索対象の文字列。文字列。pattern
— re2 正規表現構文 に基づく正規表現。文字列。
返される値
- 一致の回数。UInt64。
例
クエリ:
結果:
regexpExtract
haystack
内で正規表現パターンに一致する最初の文字列を抽出し、正規表現グループインデックスに対応します。
構文
エイリアス: REGEXP_EXTRACT(haystack, pattern[, index])
。
引数
haystack
— 正規表現パターンが一致する文字列。文字列。pattern
— 文字列、正規表現式で、定数である必要があります。文字列。index
– 0 以上の整数。デフォルトは 1 です。抽出する正規表現グループを示します。UInt または Int。オプション。
返される値
pattern
は複数の正規表現グループを含む場合があります。index
はどの正規表現グループを抽出するかを示します。インデックスが 0 の場合は、全体の正規表現が一致します。文字列。
例
結果:
hasSubsequence
needle
が haystack
の部分列である場合は 1 を返し、そうでない場合は 0 を返します。
文字列の部分列は、残りの要素の順序を変更することなく、ゼロまたはそれ以上の要素を削除することによって与えられた文字列から導出できるシーケンスです。
構文
引数
返される値
needle
がhaystack
の部分列である場合は 1、そうでない場合は 0。UInt8。
例
クエリ:
結果:
hasSubsequenceCaseInsensitive
hasSubsequence と同様ですが、大文字と小文字を区別せずに検索します。
構文
引数
返される値
needle
がhaystack
の部分列である場合は 1、そうでない場合は 0。UInt8。
例
クエリ:
結果:
hasSubsequenceUTF8
hasSubsequence と同様ですが、haystack
と needle
が UTF-8 エンコードされた文字列であると仮定します。
構文
引数
返される値
needle
がhaystack
の部分列である場合は 1、そうでない場合は 0。UInt8。
クエリ:
例
結果:
hasSubsequenceCaseInsensitiveUTF8
hasSubsequenceUTF8 と同様ですが、大文字と小文字を区別しない検索を行います。
構文
引数
返される値
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
を返します。
クエリ: