メインコンテンツへスキップ
以下のドキュメントは、system.functions system table から生成されています。

alphaTokens

導入バージョン: v1.1.0 a-z および A-Z の範囲に含まれる連続したバイト列からなる部分文字列を抽出し、それらの部分文字列の配列を返します。 構文
alphaTokens(s[, max_substrings])
別名: splitByAlpha 引数
  • s — 分割する文字列。String
  • max_substrings — 任意。max_substrings > 0 の場合、返される部分文字列の数は max_substrings 以下になります。それ以外の場合、この関数は可能な限り多くの部分文字列を返します。Int64
戻り値 s から抽出された部分文字列の配列を返します。Array(String) 使用例
Query
SELECT alphaTokens('abca1abc');
Response
┌─alphaTokens('abca1abc')─┐
│ ['abca','abc']          │
└─────────────────────────┘

arrayStringConcat

導入バージョン: v1.1.0 配列内の値の文字列表現を、指定した区切り文字で連結します。区切り文字は省略可能なパラメータで、デフォルト値は空文字列です。 構文
arrayStringConcat(arr[, separator])
別名: array_to_string 引数
  • arr — 連結する配列。Array(T)
  • separator — 省略可能。区切り文字列。デフォルトは空文字列です。const String
戻り値 連結後の文字列を返します。String 使用例
Query
SELECT arrayStringConcat(['12/05/2021', '12:50:00'], ' ') AS DateString;
Response
┌─DateString──────────┐
│ 12/05/2021 12:50:00 │
└─────────────────────┘

extractAllGroupsVertical

導入バージョン: v20.5.0 正規表現を使用して文字列内のすべてのグループに一致する部分を抽出し、配列の配列を返します。各配列には、入力文字列での出現順にまとめられた、各グループの一致部分が含まれます。 構文
extractAllGroupsVertical(s, regexp)
別名: extractAllGroups 引数 戻り値 配列の配列を返します。各内側の配列には、1 回のマッチでキャプチャされたグループが含まれます。各マッチごとに、正規表現内のキャプチャグループ (グループ 1、グループ 2 など) に対応する要素を持つ配列が生成されます。マッチが見つからない場合は、空の配列を返します。Array(Array(String)) 使用例
Query
WITH '< Server: nginx
< Date: Tue, 22 Jan 2019 00:26:14 GMT
< Content-Type: text/html; charset=UTF-8
< Connection: keep-alive
' AS s
SELECT extractAllGroupsVertical(s, '< ([\\w\\-]+): ([^\\r\\n]+)');
Response
[['Server','nginx'],['Date','Tue, 22 Jan 2019 00:26:14 GMT'],['Content-Type','text/html; charset=UTF-8'],['Connection','keep-alive']]

ngrams

導入バージョン: v21.11.0 UTF-8文字列を長さ N の N-gram に分割します。 構文
ngrams(s, N)
引数 戻り値 N-gram の配列を返します。Array(String) 使用例
Query
SELECT ngrams('ClickHouse', 3);
Response
['Cli','lic','ick','ckH','kHo','Hou','ous','use']

reverseBySeparator

導入バージョン: v26.2.0 指定した区切り文字で区切られた文字列内の部分文字列の順序を反転します。 この関数は、区切り文字で文字列を分割し、得られた各部分の順序を逆にしたうえで、 同じ区切り文字を使って再結合します。ドメイン名、 ファイルパス、その他の階層データで部分の順序を逆にしたい場合のパースに便利です。 例:
  • reverseBySeparator(‘www.google.com’) は ‘com.google.www’ を返します
  • reverseBySeparator(‘a/b/c’, ’/’) は ‘c/b/a’ を返します
  • reverseBySeparator(‘x::y::z’, ’::’) は ‘z::y::x’ を返します
構文
reverseBySeparator(string[, separator])
引数
  • string — 各部分の順序を逆にする入力文字列。String
  • separator — 各部分の識別に使用する区切り文字列。指定しない場合は ’.’ (ドット) を使用します。デフォルト: ’.’ String
戻り値 元の文字列の部分文字列を右から左へ並べ替え、同じ区切り文字で連結した文字列を返します。String 基本的なドメインの反転
Query
SELECT reverseBySeparator('www.google.com')
Response
'com.google.www'
パスの逆順
Query
SELECT reverseBySeparator('a/b/c', '/')
Response
'c/b/a'
任意の区切り文字
Query
SELECT reverseBySeparator('x::y::z', '::')
Response
'z::y::x'
ドットを含む場合の注意点
Query
SELECT reverseBySeparator('.a.b.', '.')
Response
'.b.a.'
単一の要素
Query
SELECT reverseBySeparator('single')
Response
'single'
空の区切り文字
Query
SELECT reverseBySeparator('abcde', '')
Response
'edcba'

splitByChar

導入バージョン: v1.1.0 指定したちょうど 1 文字の定数文字列 separator で文字列を分割し、部分文字列の配列を返します。 区切り文字が文字列の先頭または末尾にある場合や、区切り文字が連続して複数出現する場合は、空の部分文字列が生成されることがあります。
設定 splitby_max_substrings_includes_remaining_string (デフォルト: 0) は、引数 max_substrings > 0 の場合に、残りの文字列を結果配列の最後の要素に含めるかどうかを制御します。
次の場合、空の部分文字列が生成されることがあります。
  • 区切り文字が文字列の先頭または末尾にある
  • 区切り文字が連続して複数出現する
  • 元の文字列 s が空である
構文
splitByChar(separator, s[, max_substrings])
引数
  • separator — 区切り文字は 1 バイト文字である必要があります。String
  • s — 分割対象の文字列です。String
  • max_substrings — 任意です。max_substrings > 0 の場合、返される配列に含まれる部分文字列は最大 max_substrings 個です。それ以外の場合、関数は可能な限り多くの部分文字列を返します。デフォルト値は 0 です。Int64
戻り値 選択された部分文字列の配列を返します。Array(String) 使用例
Query
SELECT splitByChar(',', '1,2,3,abcde');
Response
┌─splitByChar(⋯2,3,abcde')─┐
│ ['1','2','3','abcde']    │
└──────────────────────────┘

splitByNonAlpha

導入バージョン: v21.9.0 空白文字および句読点で区切って、文字列を部分文字列の配列に分割します。
設定 splitby_max_substrings_includes_remaining_string (デフォルト: 0) は、引数 max_substrings > 0 の場合に、残りの文字列を結果配列の最後の要素に含めるかどうかを制御します。
構文
splitByNonAlpha(s[, max_substrings])
引数
  • s — 分割対象の文字列。String
  • max_substrings — 省略可。max_substrings > 0 の場合、返される部分文字列の数は max_substrings 個以下になります。それ以外の場合、この関数は可能な限り多くの部分文字列を返します。デフォルト値: 0Int64
戻り値 s から抽出された部分文字列の配列を返します。Array(String) 使用例
Query
SELECT splitByNonAlpha('user@domain.com');
Response
['user','domain','com']

splitByRegexp

導入バージョン: v21.6.0 指定された正規表現で区切られた文字列を、部分文字列の配列に分割します。 指定された正規表現が空の場合、文字列は1文字ごとの配列に分割されます。 正規表現に一致する箇所が見つからない場合、文字列は分割されません。 次の場合、空の部分文字列が選択されることがあります。
  • 空でない正規表現の一致が文字列の先頭または末尾にある場合
  • 空でない正規表現の一致が連続して複数回発生する場合
  • 正規表現が空でなく、元の文字列 string が空の場合。
設定 splitby_max_substrings_includes_remaining_string (デフォルト: 0) は、引数 max_substrings > 0 の場合に、残りの文字列を結果配列の最後の要素に含めるかどうかを制御します。
構文
splitByRegexp(regexp, s[, max_substrings])
引数
  • regexp — 正規表現。定数。String または FixedString
  • s — 分割対象の文字列。String
  • max_substrings — 任意。max_substrings > 0 の場合、返される部分文字列の数は最大で max_substrings になります。それ以外の場合、この関数は可能な限り多くの部分文字列を返します。デフォルト値: 0Int64
戻り値 s から抽出された部分文字列の配列を返します。Array(String) 使用例
Query
SELECT splitByRegexp('\\d+', 'a12bc23de345f');
Response
┌─splitByRegex⋯c23de345f')─┐
│ ['a12bc23de345f']        │
└──────────────────────────┘
空の正規表現
Query
SELECT splitByRegexp('', 'abcde');
Response
┌─splitByRegexp('', 'abcde')─┐
│ ['a','b','c','d','e']      │
└────────────────────────────┘

splitByString

導入バージョン: v1.1.0 複数文字で構成される定数 separator を使って文字列を分割し、部分文字列の配列を返します。 文字列 separator が空の場合、文字列 s は1文字ずつの配列に分割されます。 次の場合、空の部分文字列が含まれることがあります。
  • 空でない区切り文字が文字列の先頭または末尾にある場合
  • 空でない区切り文字が連続して複数ある場合
  • 区切り文字が空でなく、元の文字列 s が空の場合
splitby_max_substrings_includes_remaining_string 設定 (デフォルト: 0) は、引数 max_substrings > 0 の場合に、残りの文字列を結果配列の最後の要素に含めるかどうかを制御します。
構文
splitByString(separator, s[, max_substrings])
引数
  • separator — 区切り文字。 String
  • s — 分割対象の文字列。 String
  • max_substrings — 任意。max_substrings > 0 の場合、返される部分文字列の数は max_substrings 以下になります。それ以外の場合、この関数は可能な限り多くの部分文字列を返します。デフォルト値: 0Int64
戻り値 s から抽出された部分文字列の配列を返します。 Array(String) 使用例
Query
SELECT splitByString(', ', '1, 2 3, 4,5, abcde');
Response
┌─splitByStrin⋯4,5, abcde')─┐
│ ['1','2 3','4,5','abcde'] │
└───────────────────────────┘
区切り文字が空の場合
Query
SELECT splitByString('', 'abcde');
Response
┌─splitByString('', 'abcde')─┐
│ ['a','b','c','d','e']      │
└────────────────────────────┘

splitByWhitespace

導入バージョン: v21.9.0 空白文字で区切られた文字列を、部分文字列の配列に分割します。
設定 splitby_max_substrings_includes_remaining_string (デフォルト: 0) は、引数 max_substrings > 0 のときに、残りの文字列を結果配列の最後の要素に含めるかどうかを制御します。
構文
splitByWhitespace(s[, max_substrings])
引数
  • s — 分割対象の文字列。String
  • max_substrings — 任意。max_substrings > 0 の場合、返される部分文字列の数は max_substrings を超えません。それ以外の場合、関数は可能な限り多くの部分文字列を返します。デフォルト値: 0Int64
戻り値 s から選択された部分文字列の配列を返します。Array(String) 使用例
Query
SELECT splitByWhitespace('  1!  a,  b.  ');
Response
['1!','a,','b.']

tokens

導入バージョン: v21.11.0 指定されたトークナイザーを使用して、文字列をトークンに分割します。 利用可能なトークナイザーは次のとおりです。
  • splitByNonAlpha は、ASCII の英数字以外の文字で文字列を分割します (関数 splitByNonAlpha も参照) 。
  • splitByString(S) は、ユーザー定義の区切り文字列 S で文字列を分割します (関数 splitByString も参照) 。区切り文字は省略可能なパラメーターで指定できます。たとえば tokens(value, 'splitByString', [', ', '; ', '\n', '\\']) のように指定します。なお、各区切り文字列は複数文字で構成できます (例では ', ') 。明示的に指定しない場合、デフォルトの区切り文字リストは単一の空白文字 [' '] です。
  • asciiCJK は、Unicode の単語境界規則 (UAX #29 に類似) を使用して文字列をトークンに分割します。ASCII の英数字およびアンダースコアは、コネクタ (文字には :、同種の文字には .') とともにトークンを形成します。非 ASCII の Unicode 文字は 1 文字単位のトークンになります。
  • ngrams(N) は、文字列を同じ長さの N-gram に分割します (関数 ngrams も参照) 。N-gram の長さは、1 から 8 までの省略可能な整数パラメーターで指定できます。たとえば tokens(value, 'ngrams', 3) のように指定します。明示的に指定しない場合、デフォルトの ngram サイズは 3 です。
  • sparseGrams(min_length, max_length, min_cutoff_length) は、文字数が min_length 以上 max_length 以下 (両端含む) の可変長 n-gram に文字列を分割します (関数 sparseGrams も参照) 。明示的に指定しない場合、min_lengthmax_length のデフォルト値はそれぞれ 3 と 100 です。パラメーター min_cutoff_length を指定すると、長さが min_cutoff_length 以上の n-gram のみが返されます。ngrams(N) と比べると、sparseGrams トークナイザーは可変長の N-gram を生成するため、元のテキストをより柔軟に表現できます。たとえば tokens(value, 'sparseGrams', 3, 5, 4) は、入力文字列から内部的に 3-, 4-, 5-gram を生成しますが、返されるのは 4-gram と 5-gram のみです。
  • array はトークン化を行いません。つまり、各行の値全体が 1 つのトークンになります (関数 array も参照) 。
splitByString トークナイザーでは、トークンが プレフィックスコード を構成していない場合、通常は長い区切り文字が優先的にマッチするようにしたいはずです。 そのためには、区切り文字を長さの降順で渡してください。 たとえば、separators = ['%21', '%'] の場合、文字列 %21abc['abc'] としてトークン化されます。一方、separators = ['%', '%21'] の場合は ['21ac'] にトークン化されます (これはおそらく意図した結果ではありません) 。 構文
tokens(value) -- 'splitByNonAlpha' トークナイザー
tokens(value, 'splitByNonAlpha')
tokens(value, 'splitByString'[, separators])
tokens(value, 'asciiCJK')
tokens(value, 'ngrams'[, n])
tokens(value, 'sparseGrams'[, min_length, max_length[, min_cutoff_length]])
tokens(value, 'array')
引数
  • value — 入力文字列です。String または FixedString
  • tokenizer — 使用するトークナイザーです。有効な引数は splitByNonAlphasplitByStringasciiCJKngramssparseGramsarray です。省略可能で、明示的に設定しない場合のデフォルトは splitByNonAlpha です。const String
  • n — 引数 tokenizerngrams の場合にのみ使用します。N-gram の長さを指定する省略可能なパラメータです。明示的に設定しない場合のデフォルトは 3 です。const UInt8
  • separators — 引数 tokenizersplit の場合にのみ使用します。区切り文字列を指定する省略可能なパラメータです。明示的に設定しない場合のデフォルトは [' '] です。const Array(String)
  • min_length — 引数 tokenizersparseGrams の場合にのみ使用します。最小グラム長を指定する省略可能なパラメータで、デフォルトは 3 です。const UInt8
  • max_length — 引数 tokenizersparseGrams の場合にのみ使用します。最大グラム長を指定する省略可能なパラメータで、デフォルトは 100 です。const UInt8
  • min_cutoff_length — 引数 tokenizersparseGrams の場合にのみ使用します。最小カットオフ長を指定する省略可能なパラメータです。const UInt8
戻り値 入力文字列から得られたトークンの Array を返します。Array デフォルトのトークナイザー
Query
SELECT tokens('test1,;\\\\ test2,;\\\\ test3,;\\\\   test4') AS tokens;
Response
['test1','test2','test3','test4']
Ngram トークナイザー
Query
SELECT tokens('abc def', 'ngrams', 3) AS tokens;
Response
['abc','bc ','c d',' de','def']

tokensForLikePattern

導入バージョン: v26.3.0 指定したトークナイザーを使用して、LIKE のパターン文字列をトークンに分割します。 tokens 関数とは異なり、この関数は LIKE パターンの特性 (先頭および末尾のワイルドカード文字など) を考慮し、パターンマッチングに有用な トークンを抽出するための、トークナイザー固有のルールを適用します。 この関数は tokens 関数と同じ引数セットをサポートします。tokenizer の後に続く 追加の引数は、選択したトークナイザーに応じて解釈されます (たとえば、ngramsnsplitByStringseparatorssparseGramsmin_length / max_length [/ min_cutoff_length]) 。 この関数は主にデバッグおよびテスト用途を想定しており、 LIKE パターンに対するトークン化の挙動を解析するために内部で使用されます。 構文
tokensForLikePattern(value[, tokenizer[, tokenizer_specific_arguments...]])
引数
  • value — 入力文字列です。String または FixedString
  • tokenizer — 使用するトークナイザーです。有効な値は splitByNonAlphasplitByStringasciiCJKngramssparseGramsarray です。省略可能で、明示的に設定しない場合のデフォルトは splitByNonAlpha です。const String
  • n — 引数 tokenizerngrams の場合にのみ使用されます。N-gram の長さを指定する省略可能なパラメーターです。明示的に設定しない場合のデフォルトは 3 です。const UInt8
  • separators — 引数 tokenizersplit の場合にのみ使用されます。区切り文字列を指定する省略可能なパラメーターです。明示的に設定しない場合のデフォルトは [' '] です。const Array(String)
  • min_length — 引数 tokenizersparseGrams の場合にのみ使用されます。最小グラム長を指定する省略可能なパラメーターで、デフォルトは 3 です。const UInt8
  • max_length — 引数 tokenizersparseGrams の場合にのみ使用されます。最大グラム長を指定する省略可能なパラメーターで、デフォルトは 100 です。const UInt8
  • min_cutoff_length — 引数 tokenizersparseGrams の場合にのみ使用されます。最小カットオフ長を指定する省略可能なパラメーターです。const UInt8
戻り値 入力文字列から生成されたトークンの配列を返します。Array デフォルトのトークナイザー
Query
SELECT tokensForLikePattern('%test1,test2,test3%') AS tokens;
Response
['test2']
最終更新日 2026年6月10日