文字列を分割するための関数
splitByChar
指定された文字で区切られた部分文字列に文字列を分割します。正確に1文字からなる定数文字列 separator
を使用します。
選択した部分文字列の配列を返します。セパレーターが文字列の先頭または末尾に現れる場合や、複数の連続したセパレーターがある場合には、空の部分文字列が選択されることがあります。
構文
引数
separator
— セパレーターは単一バイトの文字でなければなりません。 String。s
— 分割する文字列。 String。max_substrings
— オプションのInt64
で、デフォルトは0です。max_substrings
> 0 の場合、返される配列にはmax_substrings
個以内の部分文字列が含まれ、それ以外の場合は関数が可能な限り多くの部分文字列を返します。
返される値
次の条件で空の部分文字列が選択されることがあります:
- セパレーターが文字列の先頭または末尾に出現する場合;
- 複数の連続したセパレーターがある場合;
- 元の文字列
s
が空の場合。
パラメーター max_substrings
の挙動は ClickHouse v22.11 から変更されました。それ以前のバージョンでは、max_substrings
> 0 の場合、max_substrings
個の分割が行われ、文字列の残りがリストの最後の要素として返されました。
たとえば、
- v22.10 では:
SELECT splitByChar('=', 'a=b=c=d', 2);
は['a','b','c=d']
を返しました。 - v22.11 では:
SELECT splitByChar('=', 'a=b=c=d', 2);
は['a','b']
を返しました。
ClickHouse v22.11 より前のような挙動は、次の設定を行うことで再現できます:
splitby_max_substrings_includes_remaining_string
SELECT splitByChar('=', 'a=b=c=d', 2) SETTINGS splitby_max_substrings_includes_remaining_string = 1 -- ['a', 'b=c=d']
例
結果:
splitByString
文字列を文字列で区切られた部分文字列に分割します。複数の文字からなる定数文字列 separator
をセパレーターとして使用します。separator
が空の場合、文字列 s
を1文字の配列に分割します。
構文
引数
separator
— セパレーター。 String。s
— 分割する文字列。 String。max_substrings
— オプションのInt64
で、デフォルトは0です。max_substrings
> 0 の場合、返される部分文字列はmax_substrings
個以内で、それ以外の場合は関数が可能な限り多くの部分文字列を返します。
返される値
次の条件で空の部分文字列が選択されることがあります:
- 非空のセパレーターが文字列の先頭または末尾に出現する場合;
- 複数の連続した非空のセパレーターがある場合;
- 元の文字列
s
が空で、セパレーターが空でない場合。
設定 splitby_max_substrings_includes_remaining_string (デフォルト: 0) は、引数 max_substrings
> 0 の場合に残りの文字列が結果配列の最後の要素に含まれるかどうかを制御します。
例
結果:
結果:
splitByRegexp
正規表現によって区切られた部分文字列に文字列を分割します。正規表現文字列 regexp
をセパレーターとして使用します。regexp
が空の場合、文字列 s
を1文字の配列に分割します。この正規表現に一致するものが見つからない場合、文字列 s
は分割されません。
構文
引数
regexp
— 正規表現。定数。 String または FixedString。s
— 分割する文字列。 String。max_substrings
— オプションのInt64
で、デフォルトは0です。max_substrings
> 0 の場合、返される部分文字列はmax_substrings
個以内で、それ以外の場合は関数が可能な限り多くの部分文字列を返します。
返される値
次の条件で空の部分文字列が選択されることがあります:
- 非空の正規表現一致が文字列の先頭または末尾に出現する場合;
- 複数の連続した非空の正規表現一致がある場合;
- 元の文字列
s
が空で、正規表現が空でない場合。
設定 splitby_max_substrings_includes_remaining_string (デフォルト: 0) は、引数 max_substrings
> 0 の場合に残りの文字列が結果配列の最後の要素に含まれるかどうかを制御します。
例
結果:
結果:
splitByWhitespace
ホワイトスペース文字で区切られた部分文字列に文字列を分割します。 選択した部分文字列の配列を返します。
構文
引数
s
— 分割する文字列。 String。max_substrings
— オプションのInt64
で、デフォルトは0です。max_substrings
> 0 の場合、返される部分文字列はmax_substrings
個以内で、それ以外の場合は関数が可能な限り多くの部分文字列を返します。
返される値
設定 splitby_max_substrings_includes_remaining_string (デフォルト: 0) は、引数 max_substrings
> 0 の場合に残りの文字列が結果配列の最後の要素に含まれるかどうかを制御します。
例
結果:
splitByNonAlpha
ホワイトスペースおよび句読点文字で区切られた部分文字列に文字列を分割します。 選択した部分文字列の配列を返します。
構文
引数
s
— 分割する文字列。 String。max_substrings
— オプションのInt64
で、デフォルトは0です。max_substrings
> 0 の場合、返される部分文字列はmax_substrings
個以内で、それ以外の場合は関数が可能な限り多くの部分文字列を返します。
返される値
設定 splitby_max_substrings_includes_remaining_string (デフォルト: 0) は、引数 max_substrings
> 0 の場合に残りの文字列が結果配列の最後の要素に含まれるかどうかを制御します。
例
arrayStringConcat
配列にリストされている値の文字列表現を、セパレーターで結合します。 separator
はオプションのパラメーターで、デフォルトは空の文字列に設定されています。
文字列を返します。
構文
例
結果:
alphaTokens
範囲a-zおよびA-Zの連続したバイトの部分文字列を選択します。部分文字列の配列を返します。
構文
エイリアス: splitByAlpha
引数
s
— 分割する文字列。 String。max_substrings
— オプションのInt64
で、デフォルトは0です。max_substrings
> 0 の場合、返される部分文字列はmax_substrings
個以内で、それ以外の場合は関数が可能な限り多くの部分文字列を返します。
返される値
設定 splitby_max_substrings_includes_remaining_string (デフォルト: 0) は、引数 max_substrings
> 0 の場合に残りの文字列が結果配列の最後の要素に含まれるかどうかを制御します。
例
extractAllGroups
正規表現によって一致した非重複部分文字列からすべてのグループを抽出します。
構文
引数
text
— String または FixedString。regexp
— 正規表現。定数。 String または FixedString。
返される値
- 関数が少なくとも1つの一致するグループを見つけた場合、グループID(1からN、Nは
regexp
のキャプチャグループの数)によってクラスタリングされたArray(Array(String))
カラムを返します。一致するグループがない場合、空の配列を返します。 Array。
例
結果:
ngrams
UTF-8 文字列を ngramsize
シンボルのn-gramに分割します。
この関数は非推奨です。 tokens を使用し、ngram
トークナイザーを使用することをお勧めします。
この関数は将来的に削除される可能性があります。
構文
引数
string
— 文字列。 String または FixedString。ngramsize
— n-gramのサイズ。 UInt。
返される値
例
結果:
tokens
文字列を指定されたトークナイザーを使用してトークンに分割します。 デフォルトのトークナイザーは、非アルファベットのASCII文字をセパレーターとして使用します。
引数
value
— 入力文字列。 String または FixedString。tokenizer
— 使用するトークナイザー。 有効な引数はdefault
,ngram
, およびnoop
です。オプションで、明示的に設定されていない場合はデフォルトがdefault
になります。 const Stringngrams
— 引数tokenizer
がngram
の場合のみ関連があります:n-gramsの長さを定義するオプションのパラメーターです。明示的に設定されていない場合はデフォルトが3
になります。 UInt8。
返される値
- 入力文字列から得られたトークンの結果配列。 Array。
例
デフォルト設定を使用する場合:
結果:
n-gram トークナイザーをngram長3で使用する場合:
結果: