Database

[SQL] 문자열 합치기 (||/CONCAT/CONCAT_WS)

비번변경 2023. 6. 1. 23:04

개요

최근 SQL을 통해 문자열을 많이 다루게 될 것 같아 관련 내용을 정리해두고자 한다. 이 글에서는 문자열을 합치는 방법에 대해서 정리한다. 표준인 ANSI SQL을 기준으로 하고 싶어, PostgreSQL을 사용해 정리한다.

 

 

||

|| 연산자를 사용하면 두 개 이상의 문자열을 열결하여 하나의 문자열로 반환한다. 만약 연결할 문자열에 NULL이 포함되어 있으면 NULL을 반환한다.

str_1 || str_2

-- 예시
SELECT
   'Concatenation' || ' ' || 'Operator' AS result,
   'Concat with ' || NULL AS contain_null_result
;

 

실행 결과

| result                 | contain_null_result |
| ---------------------- | ------------------- |
| Concatenation Operator |                     |

 

 

CONCAT

CONCAT 함수는 char, varchar, text로 변환할 수 있는 인자를 전달받아 하나의 문자열로 연결하여 반환한다. ||과 다르게 NULL을 무시한다. 또한 VARIADIC 키워드를 이용해 배열을 인자로 받을 수도 있다.

CONCAT(str_1, str_2, ...)

-- 예시
SELECT
    CONCAT ('CONCAT', ' ', 'function') AS func,
    CONCAT('Concat with ', NULL) AS func_null;

 

 

실행 결과

| func            | func_null    |
| --------------- | ------------ |
| CONCAT function | Concat with  |

 

 

CONCAT_WS

CONCAT_WS 함수는 여러 문자열을 지정한 구분 기호를 기준으로 연결한 문자열을 반환한다. 함수 이름의 WS는 with seperator를 뜻한다. CONCAT 함수와 비슷하게 NULL을 무시하고, 리스트도 인자값으로 받는다.

CONCAT_WS(separator,str_1,str_2,...);

-- 예시
SELECT
	CONCAT_WS ('!', 'CONCAT', ' ', 'function') AS func,
    CONCAT('!', 'Concat with ', NULL) AS func_null;

 

실행 결과

| func              | func_null     |
| ----------------- | ------------- |
| CONCAT! !function | !Concat with  |

 

 

참고 문서

https://www.postgresqltutorial.com/postgresql-string-functions/postgresql-concat-function/

 

 

 

728x90