REPLACE

REPLACE (문자열 치환)

지정한 부분 문자열의 모든 발생을 제거하고, 선택적으로 다른 부분 문자열로 대체해요.

출처: Snowflake SQL Reference - REPLACE

본문

구문

REPLACE( <subject> , <pattern> [ , <replacement> ] )

인자

subject

치환을 수행할 문자열이에요. 일반적으로 컬럼이지만 리터럴일 수도 있어요.

pattern

치환하려는 부분 문자열이에요. 일반적으로 리터럴이지만 컬럼이나 표현식일 수도 있어요. 이는 "정규식"이 아니라는 점에 주의하세요. 정규식을 사용해 패턴을 검색하려면 REGEXP_REPLACE 함수를 사용해요.

replacement

패턴의 대체값으로 사용하는 값이에요. 생략하거나 빈 문자열이면 REPLACE 함수는 패턴의 모든 발생을 단순히 삭제해요.

반환 값

모든 치환이 수행된 후의 문자열을 반환해요.

사용 참고 사항

  • replacement를 지정하지 않으면 subject에서 pattern의 모든 발생을 제거한 결과를 반환해요.
  • replacement를 지정하면 subject에서 pattern의 모든 발생을 replacement로 바꾼 결과를 반환해요.
  • 인자 중 하나라도 NULL이면 결과도 NULL이에요.

참고: 원본 subject에서의 발생만 고려돼요. 결과에 나타나는 패턴은 제거/치환되지 않아요.

데이터 정렬(collation) 상세

모든 입력 인자의 데이터 정렬 지정은 호환되어야 해요.

이 함수는 다음 데이터 정렬 지정을 지원하지 않아요:

  • pi(구두점 비구분, punctuation-insensitive)
  • cs-ai(대소문자 구분, 악센트 비구분)

예시

down 문자열을 up 문자열로 치환해요:

SELECT REPLACE('down', 'down', 'up');
+-------------------------------+
| REPLACE('DOWN', 'DOWN', 'UP') |
|-------------------------------|
| up                            |
+-------------------------------+

문자열 Vacation in Athens에서 부분 문자열 Athens를 Rome으로 치환해요:

SELECT REPLACE('Vacation in Athens', 'Athens', 'Rome');
+-------------------------------------------------+
| REPLACE('VACATION IN ATHENS', 'ATHENS', 'ROME') |
|-------------------------------------------------|
| Vacation in Rome                                |
+-------------------------------------------------+

문자열 abcd에서 부분 문자열 bc를 빈 부분 문자열로 치환해요:

SELECT REPLACE('abcd', 'bc');
+-----------------------+
| REPLACE('ABCD', 'BC') |
|-----------------------|
| ad                    |
+-----------------------+

테이블의 값을 새 값으로 치환해요. 테이블을 만들고 채워요:

CREATE OR REPLACE TABLE replace_example( subject VARCHAR(10), pattern VARCHAR(10), replacement VARCHAR(10));
INSERT INTO replace_example VALUES ('old car', 'old car', 'new car'), ('sad face', 'sad', 'happy'), ('snowman', 'snow', 'fire');

값의 문자열을 지정한 치환 값으로 치환해요:

SELECT subject, pattern, replacement, REPLACE(subject, pattern, replacement) AS new FROM replace_example ORDER BY subject;
+----------+---------+-------------+------------+
| SUBJECT  | PATTERN | REPLACEMENT | NEW        |
|----------+---------+-------------+------------|
| old car  | old car | new car     | new car    |
| sad face | sad     | happy       | happy face |
| snowman  | snow    | fire        | fireman    |
+----------+---------+-------------+------------+

출력은 다음 치환들을 보여줘요:

  • old car 문자열이 new car 문자열로 치환됐어요.
  • sad face 문자열에서 부분 문자열 sad가 happy로 치환되어 새 문자열 happy face가 만들어졌어요.
  • snowman 문자열에서 부분 문자열 snow가 fire로 치환되어 새 문자열 fireman이 만들어졌어요.

더 알아보기