文字列の分割のための関数
splitByChar
指定された文字で区切られた部分文字列に文字列を分割します。一文字から成る定数文字列 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
を一文字の配列に分割します。
構文
引数
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
を一文字の配列に分割します。この正規表現に対する一致が見つからない場合、文字列 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-グラムに分割します。
構文
引数
string
— 文字列。 String または FixedString.ngramsize
— n-グラムのサイズ。 UInt.
戻り値
例
結果:
tokens
非アルファベットのASCII文字を区切りとして使用して文字列をトークンに分割します。
引数
input_string
— String データ型オブジェクトとして表されたバイトの任意のセット。
戻り値
- 入力文字列から得られたトークンの配列。 Array.
例
結果: