文字列内の検索に関する関数
このセクションのすべての関数は、デフォルトで大文字と小文字を区別して検索を行います。大文字と小文字を区別しない検索は通常、別の関数バリアントで提供されます。
大文字と小文字を区別しない検索は、英語の小文字と大文字のルールに従います。例えば、英語では大文字の 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
位置 と似ていますが、引数 haystack
と locate
が逆になっています。
この関数の動作は、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
位置 と似ていますが、haystack
と needle
がUTF-8エンコードされた文字列であることを前提としています。
例
関数 positionUTF8
は、文字 ö
(二点の部分で表現)が単一のUnicodeコードポイントとして正しくカウントされます:
クエリ:
結果:
positionCaseInsensitiveUTF8
位置UTF8 と似ていますが、大文字と小文字を区別しない検索を行います。
multiSearchAllPositions
位置 と似ていますが、haystack
文字列内の複数の needle
部分文字列の位置(バイト単位で、1から始まる)を返します。
すべての multiSearch*()
関数は、最大 28 の needles をサポートします。
構文
引数
返される値
- 部分文字列が見つかった場合の、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バリアントを提供します。
構文
引数
返される値
haystack
文字列内で、複数のneedle
文字列の中で最も左のオフセット。- 一致がない場合は 0。
例
クエリ:
結果:
multiSearchFirstPositionCaseInsensitive
multiSearchFirstPosition
と似ていますが、大文字と小文字を区別しません。
構文
引数
返される値
haystack
文字列内で、複数のneedle
文字列の中で最も左のオフセット。- 一致がない場合は 0。
例
クエリ:
結果:
multiSearchFirstPositionUTF8
multiSearchFirstPosition
と似ていますが、haystack
と needle
がUTF-8文字列であることを前提としています。
構文
引数
返される値
haystack
文字列内で、複数のneedle
文字列の中で最も左のオフセット。- 一致がない場合は 0。
例
UTF-8文字列 hello world
で、与えられたニードルの中で一致するものの最も左のオフセットを見つけます。
クエリ:
結果:
multiSearchFirstPositionCaseInsensitiveUTF8
multiSearchFirstPosition
と似ていますが、haystack
と needle
がUTF-8文字列であり、大文字と小文字を区別しません。
構文
引数
返される値
haystack
文字列内で、複数のneedle
文字列の中で最も左のオフセット(大文字と小文字を区別しない)。- 一致がない場合は 0。
例
UTF-8文字列 HELLO WORLD
で、与えられたニードルの中で一致するものの最も左のオフセットを見つけます。
クエリ:
結果:
multiSearchFirstIndex
haystack
文字列内で最も左に見つかったニードルのインデックス i
(1から始まる)を返します。一致がない場合は 0 を返します。
関数 multiSearchFirstIndexCaseInsensitive
、multiSearchFirstIndexUTF8
、および multiSearchFirstIndexCaseInsensitiveUTF8
は、大文字と小文字を区別しないおよび/またはUTF-8バリアントを提供します。
構文
引数
返される値
- 最も左に見つかったニードルのインデックス
i
(1から始まる)。一致がない場合は 0。
例
クエリ:
結果:
multiSearchFirstIndexCaseInsensitive
最も左に見つかったニードルのインデックス i
(1から始まる)を、大文字と小文字を区別せずに返します。
構文
引数
返される値
- 最も左に見つかったニードルのインデックス
i
(1から始まる)。一致がない場合は 0。
例
クエリ:
結果:
multiSearchFirstIndexUTF8
最も左に見つかったニードルのインデックス i
(1から始まる)を、haystack
と needle
がUTF-8エンコードの文字列であることを前提に返します。
構文
引数
返される値
- 最も左に見つかったニードルのインデックス
i
(1から始まる)。一致がない場合は 0。
例
UTF-8文字列 Hello World
を与え、UTF-8文字列 Hello
と World
の最初のインデックスを見つけます。
クエリ:
結果:
multiSearchFirstIndexCaseInsensitiveUTF8
最も左に見つかったニードルのインデックス i
(1から始まる)を、haystack
と needle
がUTF-8エンコードされた文字列であると仮定して、大文字と小文字を区別せずに返します。
構文
引数
返される値
- 最も左に見つかったニードルのインデックス
i
(1から始まる)。一致がない場合は 0。
例
UTF-8文字列 HELLO WORLD
を与え、UTF-8文字列 hello
と world
の最初のインデックスを見つけます。
クエリ:
結果:
multiSearchAny
少なくとも1つの文字列 needle<sub>i</sub>
が文字列 haystack
と一致する場合は 1 を返し、一致しない場合は 0 を返します。
関数 multiSearchAnyCaseInsensitive
、multiSearchAnyUTF8
および multiSearchAnyCaseInsensitiveUTF8
は、大文字と小文字を区別しないおよび/またはUTF-8バリアントを提供します。
構文
引数
返される値
- 一致があった場合は 1。
- 一致がなかった場合は 0。
例
クエリ:
結果:
multiSearchAnyCaseInsensitive
multiSearchAny と似ていますが、大文字と小文字を区別しません。
構文
引数
返される値
- 大文字と小文字を区別せずに一致があった場合は 1。
- 大文字と小文字を区別しない一致がなかった場合は 0。
例
クエリ:
結果:
multiSearchAnyUTF8
multiSearchAny と似ていますが、haystack
と needle
の部分文字列がUTF-8エンコードされた文字列であることを前提としています。
構文
引数
返される値
- 一致があった場合は 1。
- 一致がなかった場合は 0。
例
ClickHouse
をUTF-8文字列として与え、C
(\x43
) または H
(\x48
) の文字が単語の中にあるかを確認します。
クエリ:
結果:
multiSearchAnyCaseInsensitiveUTF8
multiSearchAnyUTF8 と似ていますが、大文字と小文字を区別しません。
構文
引数
返される値
- 一致があった場合は 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
文字列内の正規表現の最初の一致を返します。
haystack
が pattern
正規表現に一致しない場合、空の文字列が返されます。
正規表現にキャプチャグループがある場合、この関数は入力文字列を最初のキャプチャグループに対して一致させます。
構文
引数
返される値
haystack
文字列内の正規表現の最初の一致。 String。
例
クエリ:
結果:
extractAll
文字列内の正規表現のすべての一致の配列を返します。haystack
が pattern
正規表現に一致しない場合、空の文字列が返されます。
サブパターンに関する動作は、関数 extract
と同様です。
構文
引数
返される値
例
クエリ:
結果:
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 コードポイント ¥
に一致し、これは 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 を返します。結果が小さいほど、文字列は互いに類似しています。
関数 ngramDistanceCaseInsensitive
、ngramDistanceUTF8
、ngramDistanceCaseInsensitiveUTF8
はこの関数の大文字と小文字を区別しないおよび/または 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 バリアントを提供します。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
関数を使用していません。1 バイト以上のバイトがある場合は、各コードポイントバイトの 5 番目のビット(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
haystack
に対するパターンの正規表現一致の数を返します。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
を返します。
クエリ: