> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-3a82795f.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> 문자열 치환 함수에 대한 문서

# 문자열 치환을 위한 함수

[일반 문자열 함수](/ko/reference/functions/regular-functions/string-functions)와 [문자열 검색 함수](/ko/reference/functions/regular-functions/string-search-functions)는 별도로 설명되어 있습니다.

<Note>
  아래 문서는 `system.functions` 시스템 테이블을 기반으로 생성됩니다.
</Note>

{/*AUTOGENERATED_START*/}

<div id="format">
  ## format
</div>

도입 버전: v20.1.0

Python의 포매팅과 비슷하게, 인수에 나열된 값(문자열, 정수 등)을 사용해 `pattern` 문자열을 포맷합니다.
`pattern` 문자열에는 중괄호 `{}`로 둘러싸인 대체 필드가 포함될 수 있습니다.
중괄호로 둘러싸이지 않은 내용은 모두 리터럴 텍스트로 간주되며 출력에 그대로 복사됩니다.
리터럴 중괄호 문자는 `{{` 및 `}}`처럼 중괄호를 두 번 써서 이스케이프할 수 있습니다.
필드 이름은 숫자(0부터 시작)일 수도 있고 비어 있을 수도 있으며, 비어 있으면 암묵적으로 순차적으로 증가하는 번호가 부여됩니다.

**구문**

```sql theme={null}
format(pattern, s0[, s1, ...])
```

**인수**

* `pattern` — 자리 표시자를 포함하는 포맷 문자열입니다. [`String`](/ko/reference/data-types/string)
* `s0[, s1, ...]` — `pattern`에 대체할 하나 이상의 값입니다. [`Any`](/ko/reference/data-types)

**반환 값**

포맷된 문자열을 반환합니다. [`String`](/ko/reference/data-types/string)

**예시**

**번호가 지정된 자리 표시자**

```sql title=Query theme={null}
SELECT format('{1} {0} {1}', 'World', 'Hello')
```

```response title=Response theme={null}
┌─format('{1} {0} {1}', 'World', 'Hello')─┐
│ Hello World Hello                       │
└─────────────────────────────────────────┘
```

**자동 번호 매기기**

```sql title=Query theme={null}
SELECT format('{} {}', 'Hello', 'World')
```

```response title=Response theme={null}
┌─format('{} {}', 'Hello', 'World')─┐
│ Hello World                       │
└───────────────────────────────────┘
```

<div id="overlay">
  ## overlay
</div>

도입 버전: v24.9.0

문자열 `input`의 일부를 1부터 시작하는 인덱스 `offset`부터 다른 문자열 `replace`로 대체합니다.

**구문**

```sql theme={null}
overlay(s, replace, offset[, length])
```

**인수**

* `s` — 입력 문자열입니다. [`String`](/ko/reference/data-types/string)
* `replace` — 대체 문자열입니다. [`const String`](/ko/reference/data-types/string)
* `offset` — 정수 타입 `Int`(1부터 시작)입니다. `offset`이 음수이면 문자열 `s`의 끝을 기준으로 계산합니다. [`Int`](/ko/reference/data-types/int-uint)
* `length` — 선택 사항입니다. 정수 타입 `Int`입니다. `length`는 입력 문자열 `s`에서 대체할 부분의 길이를 지정합니다. `length`를 지정하지 않으면 `s`에서 제거되는 바이트 수는 `replace`의 길이와 같으며, 지정하면 `length` 바이트를 제거합니다. [`Int`](/ko/reference/data-types/int-uint)

**반환 값**

대체된 문자열을 반환합니다. [`String`](/ko/reference/data-types/string)

**예시**

**기본 대체**

```sql title=Query theme={null}
SELECT overlay('My father is from Mexico.', 'mother', 4) AS res;
```

```response title=Response theme={null}
┌─res──────────────────────┐
│ My mother is from Mexico.│
└──────────────────────────┘
```

**길이를 지정한 대체**

```sql title=Query theme={null}
SELECT overlay('My father is from Mexico.', 'dad', 4, 6) AS res;
```

```response title=Response theme={null}
┌─res───────────────────┐
│ My dad is from Mexico.│
└───────────────────────┘
```

<div id="overlayUTF8">
  ## overlayUTF8
</div>

도입 버전: v24.9.0

문자열 `s`의 일부를 1부터 시작하는 인덱스 `offset`부터 다른 문자열 `replace`로 대체합니다.
문자열이 유효한 UTF-8로 인코딩된 텍스트를 포함한다고 가정합니다.
이 가정이 깨져도 예외는 발생하지 않으며 결과는 정의되지 않습니다.

**구문**

```sql theme={null}
overlayUTF8(s, replace, offset[, length])
```

**인수**

* `s` — 입력 문자열입니다. [`String`](/ko/reference/data-types/string)
* `replace` — 대체 문자열입니다. [`const String`](/ko/reference/data-types/string)
* `offset` — 정수 타입 `Int`(1부터 시작)입니다. `offset`이 음수이면 입력 문자열 `s`의 끝을 기준으로 계산합니다. [`(U)Int*`](/ko/reference/data-types/int-uint)
* `length` — 선택 사항입니다. 입력 문자열 `s`에서 대체할 부분 문자열의 길이를 지정합니다. `length`를 지정하지 않으면 `s`에서 제거되는 문자 수는 `replace`의 길이와 같으며, 지정하면 `length`개의 문자를 제거합니다. [`(U)Int*`](/ko/reference/data-types/int-uint)

**반환 값**

대체된 문자열을 반환합니다. [`String`](/ko/reference/data-types/string)

**예시**

**UTF-8 대체**

```sql title=Query theme={null}
SELECT overlayUTF8('Mein Vater ist aus Österreich.', 'der Türkei', 20) AS res;
```

```response title=Response theme={null}
┌─res───────────────────────────┐
│ Mein Vater ist aus der Türkei.│
└───────────────────────────────┘
```

<div id="printf">
  ## printf
</div>

도입 버전: v24.8.0

`printf` 함수는 C++의 printf 함수와 유사하게, 지정된 문자열을 인수로 전달된 값(문자열, 정수, 부동소수점 수 등)으로 포맷합니다.
포맷 문자열에는 `%` 문자로 시작하는 포맷 지정자를 포함할 수 있습니다.
`%`와 그 뒤의 포맷 지정자에 해당하지 않는 모든 내용은 리터럴 텍스트로 간주되어 출력에 그대로 복사됩니다.
리터럴 `%` 문자는 `%%`로 이스케이프할 수 있습니다.
포맷 문자열은 상수이거나 컬럼 표현식일 수 있으므로 행마다 서로 다른 포맷 패턴을 사용할 수 있습니다.

**구문**

```sql theme={null}
printf(format[, sub1, sub2, ...])
```

**인수**

* `format` — `%` 지정자를 포함하는 포맷 문자열입니다. [`String`](/ko/reference/data-types/string)
* `sub1, sub2, ...` — 선택 사항입니다. 포맷 문자열에 대입할 0개 이상의 값입니다. [`Any`](/ko/reference/data-types)

**반환 값**

포맷된 문자열을 반환합니다. [`String`](/ko/reference/data-types/string)

**예시**

**C++ 스타일 서식 지정**

```sql title=Query theme={null}
SELECT printf('%%%s %s %d', 'Hello', 'World', 2024);
```

```response title=Response theme={null}
┌─printf('%%%s %s %d', 'Hello', 'World', 2024)─┐
│ %Hello World 2024                            │
└──────────────────────────────────────────────┘
```

<div id="regexpQuoteMeta">
  ## regexpQuoteMeta
</div>

도입 버전: v20.1.0

정규식에서 특별한 의미를 갖는 다음 문자 앞에 백슬래시를 추가합니다: `\0`, `\\`, `|`, `(`, `)`, `^`, `$`, `.`, `[`, `]`, `?`, `*`, `+`, `{`, `:`, `-`.
이 구현은 re2::RE2::QuoteMeta와 약간 다릅니다.
0바이트는 `\x00` 대신 `\0`으로 이스케이프하며, 필요한 문자만 이스케이프합니다.

**구문**

```sql theme={null}
regexpQuoteMeta(s)
```

**인수**

* `s` — regex용으로 이스케이프할 문자가 포함된 입력 문자열입니다. [`String`](/ko/reference/data-types/string)

**반환 값**

regex 특수 문자가 이스케이프된 문자열을 반환합니다. [`String`](/ko/reference/data-types/string)

**예시**

**regex 특수 문자 이스케이프**

```sql title=Query theme={null}
SELECT regexpQuoteMeta('Hello. [World]? (Yes)*') AS res
```

```response title=Response theme={null}
┌─res───────────────────────────┐
│ Hello\. \[World\]\? \(Yes\)\* │
└───────────────────────────────┘
```

<div id="replaceAll">
  ## replaceAll
</div>

도입 버전: v1.1.0

`haystack`에 있는 `pattern` 부분 문자열을 모두 `replacement` 문자열로 대체합니다.

**구문**

```sql theme={null}
replaceAll(haystack, pattern, replacement)
```

**별칭**: `replace`

**인수**

* `haystack` — 검색할 입력 문자열입니다. [`String`](/ko/reference/data-types/string)
* `pattern` — 찾아서 바꿀 부분 문자열입니다. [`const String`](/ko/reference/data-types/string)
* `replacement` — `pattern` 대신 사용할 문자열입니다. [`const String`](/ko/reference/data-types/string)

**반환 값**

`pattern`의 모든 일치 항목이 대체된 문자열을 반환합니다. [`String`](/ko/reference/data-types/string)

**예시**

**모든 일치 항목 대체**

```sql title=Query theme={null}
SELECT replaceAll('Hello, Hello world', 'Hello', 'Hi') AS res;
```

```response title=Response theme={null}
┌─res──────────┐
│ Hi, Hi world │
└──────────────┘
```

<div id="replaceOne">
  ## replaceOne
</div>

도입 버전: v1.1.0

`haystack`에서 `pattern` 부분 문자열이 처음 나타나는 부분을 `replacement` 문자열로 대체합니다.

**구문**

```sql theme={null}
replaceOne(haystack, pattern, replacement)
```

**인수**

* `haystack` — 검색할 입력 문자열입니다. [`String`](/ko/reference/data-types/string)
* `pattern` — 찾아서 대체할 부분 문자열입니다. [`const String`](/ko/reference/data-types/string)
* `replacement` — `pattern`을 대체할 문자열입니다. [`const String`](/ko/reference/data-types/string)

**반환 값**

`pattern`이 처음 일치한 부분이 대체된 문자열을 반환합니다. [`String`](/ko/reference/data-types/string)

**예시**

**첫 번째 일치 항목 대체**

```sql title=Query theme={null}
SELECT replaceOne('Hello, Hello world', 'Hello', 'Hi') AS res;
```

```response title=Response theme={null}
┌─res─────────────┐
│ Hi, Hello world │
└─────────────────┘
```

<div id="replaceRegexpAll">
  ## replaceRegexpAll
</div>

도입 버전: v1.1.0

`replaceRegexpOne`와 비슷하지만 패턴과 일치하는 모든 항목을 대체합니다.
예외적으로, 정규식이 빈 부분 문자열과 일치하는 경우 대체는 한 번만 수행됩니다.

**구문**

```sql theme={null}
replaceRegexpAll(haystack, pattern, replacement)
```

**별칭**: `REGEXP_REPLACE`

**인수**

* `haystack` — 검색할 입력 문자열입니다. [`String`](/ko/reference/data-types/string)
* `pattern` — 찾을 정규식 패턴입니다. [`const String`](/ko/reference/data-types/string)
* `replacement` — 패턴을 대체할 문자열이며, 치환값을 포함할 수 있습니다. [`const String`](/ko/reference/data-types/string)

**반환 값**

모든 정규식 일치 항목이 대체된 문자열을 반환합니다. [`String`](/ko/reference/data-types/string)

**예시**

**모든 문자를 두 번 반복한 값으로 대체**

```sql title=Query theme={null}
SELECT replaceRegexpAll('Hello123', '.', '\\\\0\\\\0') AS res
```

```response title=Response theme={null}
┌─res──────────────────┐
│ HHeelllloo112233     │
└──────────────────────┘
```

**빈 부분 문자열 대체 예시**

```sql title=Query theme={null}
SELECT replaceRegexpAll('Hello, World!', '^', 'here: ') AS res
```

```response title=Response theme={null}
┌─res─────────────────┐
│ here: Hello, World! │
└─────────────────────┘
```

<div id="replaceRegexpOne">
  ## replaceRegexpOne
</div>

도입 버전: v1.1.0

`haystack`에서 정규식 `pattern`(re2 구문)과 일치하는 부분 문자열이 처음 나타나는 부분을 `replacement` 문자열로 대체합니다.
`replacement`에는 치환 문자열 `\0-\9`를 포함할 수 있습니다.
치환 문자열 `\1-\9`는 1번째부터 9번째 캡처 그룹(하위 일치)에 대응하며, 치환 문자열 `\0`은 전체 일치에 대응합니다.
`pattern` 또는 `replacement` 문자열에서 `\` 문자를 있는 그대로 사용하려면 `\`로 이스케이프하십시오.
또한 문자열 리터럴에는 추가 이스케이프가 필요하다는 점에도 유의하십시오.

**구문**

```sql theme={null}
replaceRegexpOne(haystack, pattern, replacement)
```

**인수**

* `haystack` — 검색할 입력 문자열입니다. [`String`](/ko/reference/data-types/string)
* `pattern` — 찾을 정규식 패턴입니다. [`const String`](/ko/reference/data-types/string)
* `replacement` — 패턴과 일치하는 부분을 바꿀 문자열이며, 치환값을 포함할 수 있습니다. [`const String`](/ko/reference/data-types/string)

**반환 값**

첫 번째 정규식 일치 항목이 바뀐 문자열을 반환합니다. [`String`](/ko/reference/data-types/string)

**예시**

**ISO 날짜를 미국식 포맷으로 변환**

```sql title=Query theme={null}
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 title=Response theme={null}
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
```

**문자열을 열 번 반복하기**

```sql title=Query theme={null}
SELECT replaceRegexpOne('Hello, World!', '.*', '\\\\0\\\\0\\\\0\\\\0\\\\0\\\\0\\\\0\\\\0\\\\0\\\\0') AS res
```

```response title=Response theme={null}
┌─res────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!Hello, World! │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
```

<div id="translate">
  ## translate
</div>

도입 버전: v22.7.0

`from` 및 `to` 문자열로 정의된 일대일 문자 매핑을 사용해 문자열 `s`의 문자를 대체합니다.
`from` 및 `to`는 상수 ASCII 문자열이어야 합니다.
`from` 및 `to`의 길이가 같으면 `s`에서 `from`의 첫 번째 문자가 나타날 때마다 `to`의 첫 번째 문자로 대체되고, `from`의 두 번째 문자는 `to`의 두 번째 문자로 대체되는 식으로 계속됩니다.
`from`에 `to`보다 더 많은 문자가 포함된 경우, `to`에 대응하는 문자가 없는 `from` 끝부분의 문자들은 `s`에서 모두 삭제됩니다.
`s`의 ASCII가 아닌 문자는 이 함수로 수정되지 않습니다.

**구문**

```sql theme={null}
translate(s, from, to)
```

**인수**

* `s` — 변환할 입력 문자열입니다. [`String`](/ko/reference/data-types/string)
* `from` — 대체할 문자가 포함된 상수 ASCII 문자열입니다. [`const String`](/ko/reference/data-types/string)
* `to` — 대체 문자로 사용할 문자가 포함된 상수 ASCII 문자열입니다. [`const String`](/ko/reference/data-types/string)

**반환 값**

문자 변환이 적용된 문자열을 반환합니다. [`String`](/ko/reference/data-types/string)

**예시**

**문자 매핑**

```sql title=Query theme={null}
SELECT translate('Hello, World!', 'delor', 'DELOR') AS res
```

```response title=Response theme={null}
┌─res───────────┐
│ HELLO, WORLD! │
└───────────────┘
```

**길이가 다른 경우**

```sql title=Query theme={null}
SELECT translate('clickhouse', 'clickhouse', 'CLICK') AS res
```

```response title=Response theme={null}
┌─res───┐
│ CLICK │
└───────┘
```

<div id="translateUTF8">
  ## translateUTF8
</div>

도입 버전: v22.7.0

[`translate`](#translate)와 유사하지만 `s`, `from`, `to`는 UTF-8로 인코딩된 문자열이라고 가정합니다.

**구문**

```sql theme={null}
translateUTF8(s, from, to)
```

**인수**

* `s` — 변환할 UTF-8 입력 문자열입니다. [`String`](/ko/reference/data-types/string)
* `from` — 대체할 문자가 들어 있는 상수 UTF-8 문자열입니다. [`const String`](/ko/reference/data-types/string)
* `to` — 대체 문자로 사용할 문자가 들어 있는 상수 UTF-8 문자열입니다. [`const String`](/ko/reference/data-types/string)

**반환 값**

`String` 데이터 타입의 값을 반환합니다. [`String`](/ko/reference/data-types/string)

**예시**

**UTF-8 문자 변환**

```sql title=Query theme={null}
SELECT translateUTF8('Münchener Straße', 'üß', 'us') AS res;
```

```response title=Response theme={null}
┌─res──────────────┐
│ Munchener Strase │
└──────────────────┘
```
