메인 콘텐츠로 건너뛰기
일반 문자열 함수문자열 검색 함수는 별도로 설명되어 있습니다.
아래 문서는 system.functions 시스템 테이블을 기반으로 생성됩니다.

format

도입 버전: v20.1.0 Python의 포매팅과 비슷하게, 인수에 나열된 값(문자열, 정수 등)을 사용해 pattern 문자열을 포맷합니다. pattern 문자열에는 중괄호 {}로 둘러싸인 대체 필드가 포함될 수 있습니다. 중괄호로 둘러싸이지 않은 내용은 모두 리터럴 텍스트로 간주되며 출력에 그대로 복사됩니다. 리터럴 중괄호 문자는 {{}}처럼 중괄호를 두 번 써서 이스케이프할 수 있습니다. 필드 이름은 숫자(0부터 시작)일 수도 있고 비어 있을 수도 있으며, 비어 있으면 암묵적으로 순차적으로 증가하는 번호가 부여됩니다. 구문
format(pattern, s0[, s1, ...])
인수
  • pattern — 자리 표시자를 포함하는 포맷 문자열입니다. String
  • s0[, s1, ...]pattern에 대체할 하나 이상의 값입니다. Any
반환 값 포맷된 문자열을 반환합니다. String 예시 번호가 지정된 자리 표시자
Query
SELECT format('{1} {0} {1}', 'World', 'Hello')
Response
┌─format('{1} {0} {1}', 'World', 'Hello')─┐
│ Hello World Hello                       │
└─────────────────────────────────────────┘
자동 번호 매기기
Query
SELECT format('{} {}', 'Hello', 'World')
Response
┌─format('{} {}', 'Hello', 'World')─┐
│ Hello World                       │
└───────────────────────────────────┘

overlay

도입 버전: v24.9.0 문자열 input의 일부를 1부터 시작하는 인덱스 offset부터 다른 문자열 replace로 대체합니다. 구문
overlay(s, replace, offset[, length])
인수
  • s — 입력 문자열입니다. String
  • replace — 대체 문자열입니다. const String
  • offset — 정수 타입 Int(1부터 시작)입니다. offset이 음수이면 문자열 s의 끝을 기준으로 계산합니다. Int
  • length — 선택 사항입니다. 정수 타입 Int입니다. length는 입력 문자열 s에서 대체할 부분의 길이를 지정합니다. length를 지정하지 않으면 s에서 제거되는 바이트 수는 replace의 길이와 같으며, 지정하면 length 바이트를 제거합니다. Int
반환 값 대체된 문자열을 반환합니다. String 예시 기본 대체
Query
SELECT overlay('My father is from Mexico.', 'mother', 4) AS res;
Response
┌─res──────────────────────┐
│ My mother is from Mexico.│
└──────────────────────────┘
길이를 지정한 대체
Query
SELECT overlay('My father is from Mexico.', 'dad', 4, 6) AS res;
Response
┌─res───────────────────┐
│ My dad is from Mexico.│
└───────────────────────┘

overlayUTF8

도입 버전: v24.9.0 문자열 s의 일부를 1부터 시작하는 인덱스 offset부터 다른 문자열 replace로 대체합니다. 문자열이 유효한 UTF-8로 인코딩된 텍스트를 포함한다고 가정합니다. 이 가정이 깨져도 예외는 발생하지 않으며 결과는 정의되지 않습니다. 구문
overlayUTF8(s, replace, offset[, length])
인수
  • s — 입력 문자열입니다. String
  • replace — 대체 문자열입니다. const String
  • offset — 정수 타입 Int(1부터 시작)입니다. offset이 음수이면 입력 문자열 s의 끝을 기준으로 계산합니다. (U)Int*
  • length — 선택 사항입니다. 입력 문자열 s에서 대체할 부분 문자열의 길이를 지정합니다. length를 지정하지 않으면 s에서 제거되는 문자 수는 replace의 길이와 같으며, 지정하면 length개의 문자를 제거합니다. (U)Int*
반환 값 대체된 문자열을 반환합니다. String 예시 UTF-8 대체
Query
SELECT overlayUTF8('Mein Vater ist aus Österreich.', 'der Türkei', 20) AS res;
Response
┌─res───────────────────────────┐
│ Mein Vater ist aus der Türkei.│
└───────────────────────────────┘

printf

도입 버전: v24.8.0 printf 함수는 C++의 printf 함수와 유사하게, 지정된 문자열을 인수로 전달된 값(문자열, 정수, 부동소수점 수 등)으로 포맷합니다. 포맷 문자열에는 % 문자로 시작하는 포맷 지정자를 포함할 수 있습니다. %와 그 뒤의 포맷 지정자에 해당하지 않는 모든 내용은 리터럴 텍스트로 간주되어 출력에 그대로 복사됩니다. 리터럴 % 문자는 %%로 이스케이프할 수 있습니다. 포맷 문자열은 상수이거나 컬럼 표현식일 수 있으므로 행마다 서로 다른 포맷 패턴을 사용할 수 있습니다. 구문
printf(format[, sub1, sub2, ...])
인수
  • format% 지정자를 포함하는 포맷 문자열입니다. String
  • sub1, sub2, ... — 선택 사항입니다. 포맷 문자열에 대입할 0개 이상의 값입니다. Any
반환 값 포맷된 문자열을 반환합니다. String 예시 C++ 스타일 서식 지정
Query
SELECT printf('%%%s %s %d', 'Hello', 'World', 2024);
Response
┌─printf('%%%s %s %d', 'Hello', 'World', 2024)─┐
│ %Hello World 2024                            │
└──────────────────────────────────────────────┘

regexpQuoteMeta

도입 버전: v20.1.0 정규식에서 특별한 의미를 갖는 다음 문자 앞에 백슬래시를 추가합니다: \0, \\, |, (, ), ^, $, ., [, ], ?, *, +, {, :, -. 이 구현은 re2::RE2::QuoteMeta와 약간 다릅니다. 0바이트는 \x00 대신 \0으로 이스케이프하며, 필요한 문자만 이스케이프합니다. 구문
regexpQuoteMeta(s)
인수
  • s — regex용으로 이스케이프할 문자가 포함된 입력 문자열입니다. String
반환 값 regex 특수 문자가 이스케이프된 문자열을 반환합니다. String 예시 regex 특수 문자 이스케이프
Query
SELECT regexpQuoteMeta('Hello. [World]? (Yes)*') AS res
Response
┌─res───────────────────────────┐
│ Hello\. \[World\]\? \(Yes\)\* │
└───────────────────────────────┘

replaceAll

도입 버전: v1.1.0 haystack에 있는 pattern 부분 문자열을 모두 replacement 문자열로 대체합니다. 구문
replaceAll(haystack, pattern, replacement)
별칭: replace 인수
  • haystack — 검색할 입력 문자열입니다. String
  • pattern — 찾아서 바꿀 부분 문자열입니다. const String
  • replacementpattern 대신 사용할 문자열입니다. const String
반환 값 pattern의 모든 일치 항목이 대체된 문자열을 반환합니다. String 예시 모든 일치 항목 대체
Query
SELECT replaceAll('Hello, Hello world', 'Hello', 'Hi') AS res;
Response
┌─res──────────┐
│ Hi, Hi world │
└──────────────┘

replaceOne

도입 버전: v1.1.0 haystack에서 pattern 부분 문자열이 처음 나타나는 부분을 replacement 문자열로 대체합니다. 구문
replaceOne(haystack, pattern, replacement)
인수
  • haystack — 검색할 입력 문자열입니다. String
  • pattern — 찾아서 대체할 부분 문자열입니다. const String
  • replacementpattern을 대체할 문자열입니다. const String
반환 값 pattern이 처음 일치한 부분이 대체된 문자열을 반환합니다. String 예시 첫 번째 일치 항목 대체
Query
SELECT replaceOne('Hello, Hello world', 'Hello', 'Hi') AS res;
Response
┌─res─────────────┐
│ Hi, Hello world │
└─────────────────┘

replaceRegexpAll

도입 버전: v1.1.0 replaceRegexpOne와 비슷하지만 패턴과 일치하는 모든 항목을 대체합니다. 예외적으로, 정규식이 빈 부분 문자열과 일치하는 경우 대체는 한 번만 수행됩니다. 구문
replaceRegexpAll(haystack, pattern, replacement)
별칭: REGEXP_REPLACE 인수
  • haystack — 검색할 입력 문자열입니다. String
  • pattern — 찾을 정규식 패턴입니다. const String
  • replacement — 패턴을 대체할 문자열이며, 치환값을 포함할 수 있습니다. const String
반환 값 모든 정규식 일치 항목이 대체된 문자열을 반환합니다. String 예시 모든 문자를 두 번 반복한 값으로 대체
Query
SELECT replaceRegexpAll('Hello123', '.', '\\\\0\\\\0') AS res
Response
┌─res──────────────────┐
│ HHeelllloo112233     │
└──────────────────────┘
빈 부분 문자열 대체 예시
Query
SELECT replaceRegexpAll('Hello, World!', '^', 'here: ') AS res
Response
┌─res─────────────────┐
│ here: Hello, World! │
└─────────────────────┘

replaceRegexpOne

도입 버전: v1.1.0 haystack에서 정규식 pattern(re2 구문)과 일치하는 부분 문자열이 처음 나타나는 부분을 replacement 문자열로 대체합니다. replacement에는 치환 문자열 \0-\9를 포함할 수 있습니다. 치환 문자열 \1-\9는 1번째부터 9번째 캡처 그룹(하위 일치)에 대응하며, 치환 문자열 \0은 전체 일치에 대응합니다. pattern 또는 replacement 문자열에서 \ 문자를 있는 그대로 사용하려면 \로 이스케이프하십시오. 또한 문자열 리터럴에는 추가 이스케이프가 필요하다는 점에도 유의하십시오. 구문
replaceRegexpOne(haystack, pattern, replacement)
인수
  • haystack — 검색할 입력 문자열입니다. String
  • pattern — 찾을 정규식 패턴입니다. const String
  • replacement — 패턴과 일치하는 부분을 바꿀 문자열이며, 치환값을 포함할 수 있습니다. const String
반환 값 첫 번째 정규식 일치 항목이 바뀐 문자열을 반환합니다. String 예시 ISO 날짜를 미국식 포맷으로 변환
Query
SELECT DISTINCT
    EventDate,
    replaceRegexpOne(toString(EventDate), '(\\d{4})-(\\d{2})-(\\d{2})', '\\2/\\3/\\1') AS res
FROM test.hits
LIMIT 7
FORMAT TabSeparated
Response
2014-03-17      03/17/2014
2014-03-18      03/18/2014
2014-03-19      03/19/2014
2014-03-20      03/20/2014
2014-03-21      03/21/2014
2014-03-22      03/22/2014
2014-03-23      03/23/2014
문자열을 열 번 반복하기
Query
SELECT replaceRegexpOne('Hello, World!', '.*', '\\\\0\\\\0\\\\0\\\\0\\\\0\\\\0\\\\0\\\\0\\\\0\\\\0') AS res
Response
┌─res────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!Hello, World! │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

translate

도입 버전: v22.7.0 fromto 문자열로 정의된 일대일 문자 매핑을 사용해 문자열 s의 문자를 대체합니다. fromto는 상수 ASCII 문자열이어야 합니다. fromto의 길이가 같으면 s에서 from의 첫 번째 문자가 나타날 때마다 to의 첫 번째 문자로 대체되고, from의 두 번째 문자는 to의 두 번째 문자로 대체되는 식으로 계속됩니다. fromto보다 더 많은 문자가 포함된 경우, to에 대응하는 문자가 없는 from 끝부분의 문자들은 s에서 모두 삭제됩니다. s의 ASCII가 아닌 문자는 이 함수로 수정되지 않습니다. 구문
translate(s, from, to)
인수
  • s — 변환할 입력 문자열입니다. String
  • from — 대체할 문자가 포함된 상수 ASCII 문자열입니다. const String
  • to — 대체 문자로 사용할 문자가 포함된 상수 ASCII 문자열입니다. const String
반환 값 문자 변환이 적용된 문자열을 반환합니다. String 예시 문자 매핑
Query
SELECT translate('Hello, World!', 'delor', 'DELOR') AS res
Response
┌─res───────────┐
│ HELLO, WORLD! │
└───────────────┘
길이가 다른 경우
Query
SELECT translate('clickhouse', 'clickhouse', 'CLICK') AS res
Response
┌─res───┐
│ CLICK │
└───────┘

translateUTF8

도입 버전: v22.7.0 translate와 유사하지만 s, from, to는 UTF-8로 인코딩된 문자열이라고 가정합니다. 구문
translateUTF8(s, from, to)
인수
  • s — 변환할 UTF-8 입력 문자열입니다. String
  • from — 대체할 문자가 들어 있는 상수 UTF-8 문자열입니다. const String
  • to — 대체 문자로 사용할 문자가 들어 있는 상수 UTF-8 문자열입니다. const String
반환 값 String 데이터 타입의 값을 반환합니다. String 예시 UTF-8 문자 변환
Query
SELECT translateUTF8('Münchener Straße', 'üß', 'us') AS res;
Response
┌─res──────────────┐
│ Munchener Strase │
└──────────────────┘
마지막 수정일 2026년 6월 10일