메인 콘텐츠로 건너뛰기
아래 문서는 system.functions 시스템 테이블을 기반으로 생성됩니다.

alphaTokens

v1.1.0에서 도입되었습니다 a-zA-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, 그룹 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-그램으로 분할합니다. 구문
ngrams(s, N)
인수 반환 값 n-그램으로 이루어진 배열을 반환합니다. 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 정확히 한 문자로 이루어진 지정된 상수 문자열 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개이며, 그렇지 않으면 함수는 가능한 한 많은 부분 문자열을 반환합니다. 기본값은 0입니다. Int64
반환 값 s에서 선택된 부분 문자열의 배열을 반환합니다. Array(String) 예시 사용 예시
Query
SELECT splitByNonAlpha('user@domain.com');
Response
['user','domain','com']

splitByRegexp

도입 버전: v21.6.0 주어진 정규식으로 구분된 문자열을 부분 문자열의 배열로 분할합니다. 주어진 정규식이 비어 있으면 문자열을 단일 문자 배열로 분할합니다. 정규식과 일치하는 항목을 찾지 못하면 문자열은 분할되지 않습니다. 다음과 같은 경우 빈 부분 문자열이 생성될 수 있습니다.
  • 비어 있지 않은 정규식 일치가 문자열의 시작 또는 끝에서 발생하는 경우
  • 비어 있지 않은 정규식 일치가 여러 번 연속으로 발생하는 경우
  • 정규식은 비어 있지 않지만 원래 문자열이 비어 있는 경우
설정 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를 초과하지 않습니다. 그렇지 않으면 함수는 가능한 한 많은 부분 문자열을 반환합니다. 기본값: 0. Int64
반환 값 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를 단일 문자 배열로 분할합니다. 다음과 같은 경우에는 빈 부분 문자열이 생성될 수 있습니다.
  • 비어 있지 않은 구분자가 문자열의 시작 또는 끝에 있는 경우
  • 비어 있지 않은 구분자가 여러 번 연속해서 나타나는 경우
  • 구분자는 비어 있지 않지만 원래 문자열 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를 넘지 않으며, 그렇지 않으면 함수는 가능한 한 많은 부분 문자열을 반환합니다. 기본값: 0. Int64
반환 값 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를 초과하지 않습니다. 그렇지 않으면 함수는 가능한 한 많은 부분 문자열을 반환합니다. 기본값은 0입니다. Int64
반환 값 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는 유니코드 단어 경계 규칙(UAX #29와 유사)을 사용해 문자열을 토큰으로 분할합니다. ASCII 영숫자와 밑줄 문자는 연결자와 함께 토큰을 형성합니다(문자의 경우 :, 같은 유형의 문자의 경우 .'). ASCII가 아닌 유니코드 문자는 한 글자 토큰이 됩니다.
  • ngrams(N)는 문자열을 동일한 길이의 N-그램으로 분할합니다(함수 ngrams도 참조하십시오). ngram 길이는 1~8 사이의 선택적 정수 매개변수로 지정할 수 있습니다. 예: tokens(value, 'ngrams', 3). 명시적으로 지정하지 않으면 기본 ngram 크기는 3입니다.
  • sparseGrams(min_length, max_length, min_cutoff_length)는 문자열을 최소 min_length, 최대 max_length(포함) 길이의 가변 길이 n-그램으로 분할합니다(함수 sparseGrams도 참조하십시오). 명시적으로 지정하지 않으면 min_lengthmax_length의 기본값은 각각 3과 100입니다. min_cutoff_length 매개변수를 제공하면 길이가 min_cutoff_length 이상인 n-그램만 반환됩니다. ngrams(N)와 비교하면 sparseGrams 토크나이저는 가변 길이 N-그램을 생성하므로 원본 텍스트를 더 유연하게 표현할 수 있습니다. 예를 들어 tokens(value, 'sparseGrams', 3, 5, 4)는 내부적으로 입력 문자열에서 3-, 4-, 5-그램을 생성하지만, 4-그램과 5-그램만 반환합니다.
  • array는 토큰화를 수행하지 않습니다. 즉, 각 행의 값 자체가 하나의 토큰입니다(함수 array도 참조하십시오).
splitByString 토크나이저의 경우, 토큰들이 접두 코드를 이루지 않으면 일반적으로 더 긴 구분자가 먼저 매칭되도록 하는 것이 좋습니다. 이를 위해 구분자를 길이 내림차순으로 전달하십시오. 예를 들어 구분자 = ['%21', '%']이면 문자열 %21abc['abc']로 토큰화되지만, 구분자 = ['%', '%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 — 사용할 토크나이저입니다. 유효한 인수는 splitByNonAlpha, splitByString, asciiCJK, ngrams, sparseGrams, array입니다. 선택 사항이며, 명시적으로 설정하지 않으면 기본값은 splitByNonAlpha입니다. const String
  • n — 인수 tokenizerngrams인 경우에만 적용됩니다. ngram의 길이를 지정하는 선택적 매개변수입니다. 명시적으로 설정하지 않으면 기본값은 3입니다. const UInt8
  • separators — 인수 tokenizersplit인 경우에만 적용됩니다. 구분자 문자열을 지정하는 선택적 매개변수입니다. 명시적으로 설정하지 않으면 기본값은 [' ']입니다. const Array(String)
  • min_length — 인수 tokenizersparseGrams인 경우에만 적용됩니다. 최소 gram 길이를 지정하는 선택적 매개변수이며, 기본값은 3입니다. const UInt8
  • max_length — 인수 tokenizersparseGrams인 경우에만 적용됩니다. 최대 gram 길이를 지정하는 선택적 매개변수이며, 기본값은 100입니다. const UInt8
  • min_cutoff_length — 인수 tokenizersparseGrams인 경우에만 적용됩니다. 최소 cutoff 길이를 지정하는 선택적 매개변수입니다. const UInt8
반환 값 입력 문자열에서 생성된 토큰 배열을 반환합니다. 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

Introduced in: v26.3.0 지정된 토크나이저를 사용해 LIKE 패턴 문자열을 토큰으로 분할합니다. tokens 함수와 달리 이 함수는 LIKE 패턴의 의미를 이해하며 (예: 앞이나 뒤에 오는 와일드카드 문자), 패턴 매칭에 의미 있는 토큰을 추출하기 위해 토크나이저별 규칙을 적용합니다. 이 함수는 tokens 함수와 동일한 인수 집합을 지원합니다. tokenizer 뒤에 오는 추가 인수는 선택한 토크나이저에 따라 해석됩니다 (예: ngramsn, splitByStringseparators, sparseGramsmin_length / max_length [/ min_cutoff_length]). 이 함수는 주로 디버깅 및 테스트 용도로 사용되며, 내부적으로 LIKE 패턴의 토큰화 동작을 분석하는 데 활용됩니다. 구문
tokensForLikePattern(value[, tokenizer[, tokenizer_specific_arguments...]])
인수
  • value — 입력 문자열입니다. String 또는 FixedString
  • tokenizer — 사용할 토크나이저입니다. 유효한 인수는 splitByNonAlpha, splitByString, asciiCJK, ngrams, sparseGrams, array입니다. 선택 사항이며, 명시적으로 설정하지 않으면 기본값은 splitByNonAlpha입니다. const String
  • n — 인수 tokenizerngrams인 경우에만 사용됩니다. ngrams의 길이를 지정하는 선택적 매개변수입니다. 명시적으로 설정하지 않으면 기본값은 3입니다. const UInt8
  • separators — 인수 tokenizersplit인 경우에만 사용됩니다. 구분자 문자열을 지정하는 선택적 매개변수입니다. 명시적으로 설정하지 않으면 기본값은 [' ']입니다. const Array(String)
  • min_length — 인수 tokenizersparseGrams인 경우에만 사용됩니다. 최소 gram 길이를 지정하는 선택적 매개변수이며, 기본값은 3입니다. const UInt8
  • max_length — 인수 tokenizersparseGrams인 경우에만 사용됩니다. 최대 gram 길이를 지정하는 선택적 매개변수이며, 기본값은 100입니다. const UInt8
  • min_cutoff_length — 인수 tokenizersparseGrams인 경우에만 사용됩니다. 최소 cutoff 길이를 지정하는 선택적 매개변수입니다. const UInt8
반환 값 입력 문자열에서 생성된 토큰의 결과 배열을 반환합니다. Array 예시 기본 토크나이저
Query
SELECT tokensForLikePattern('%test1,test2,test3%') AS tokens;
Response
['test2']
마지막 수정일 2026년 6월 10일