CONCAT, ||

CONCAT, ||

하나 이상의 문자열을 연결하거나, 하나 이상의 이진(binary) 값을 연결해요. || 연산자는 CONCAT의 대체 구문을 제공하며 최소 두 개의 인자를 요구해요.

출처: Snowflake SQL Reference - CONCAT, ||

본문

구문

CONCAT( <expr> [ , <expr> ... ] )

<expr> || <expr> [ || <expr> ... ]

인자

입력 표현식은 모두 문자열이거나 모두 이진 값이어야 해요.

반환 값

반환 값의 데이터 타입은 입력 값의 데이터 타입과 같아요. 입력 값 중 하나라도 NULL이면 함수는 NULL을 반환해요.

사용상 주의사항

  • GET_DDL 같은 메타데이터 함수는 상수만 입력으로 받아요. 연결된 입력은 오류를 발생시켜요.

컬레이션 상세

  • 모든 입력 인자의 컬레이션 지정은 호환 가능해야 해요.
  • 함수 결과의 컬레이션은 입력 중 우선순위가 가장 높은 컬레이션이에요.

예시

두 문자열을 연결해요.

SELECT CONCAT('George Washington ', 'Carver');

+----------------------------------------+
| CONCAT('GEORGE WASHINGTON ', 'CARVER') |
|----------------------------------------|
| George Washington Carver               |
+----------------------------------------+

세션 변수를 사용해 다섯 개의 문자열을 연결해요.

SET var_first_name = 'George';
SET var_middle_name = 'Washington';
SET var_last_name = 'Carver';

SELECT CONCAT($var_first_name, ' ', $var_middle_name, ' ', $var_last_name) AS concat_name;

+--------------------------+
| CONCAT_NAME              |
|--------------------------|
| George Washington Carver |
+--------------------------+

두 개의 VARCHAR 컬럼을 연결해요. 먼저 테이블을 만들고 데이터를 삽입해요.

CREATE OR REPLACE TABLE concat_function_example (s1 VARCHAR, s2 VARCHAR, s3 VARCHAR);
INSERT INTO concat_function_example (s1, s2, s3) VALUES
  ('co', 'd', 'e'),
  ('Colorado ', 'River ', NULL);

쿼리를 실행해요.

SELECT CONCAT(s1, s2)
  FROM concat_function_example;

+-----------------+
| CONCAT(S1, S2)  |
|-----------------|
| cod             |
| Colorado River  |
+-----------------+

두 개 이상의 문자열을 연결해요.

SELECT CONCAT(s1, s2, s3)
  FROM concat_function_example;

+--------------------+
| CONCAT(S1, S2, S3) |
|--------------------|
| code               |
| NULL               |
+--------------------+

CONCAT 함수와 IFF 함수를 사용해 NULL이 아닌 문자열만 연결해요.

SELECT CONCAT(
    IFF(s1 IS NULL, '', s1),
    IFF(s2 IS NULL, '', s2),
    IFF(s3 IS NULL, '', s3)) AS concat_non_null_strings
  FROM concat_function_example;

+-------------------------+
| CONCAT_NON_NULL_STRINGS |
|-------------------------+
| code                    |
| Colorado River          |
+-------------------------+

함수 대신 || 연결 연산자를 사용해요.

SELECT 'This ' || 'is ' || 'another ' || 'concatenation ' || 'technique.';

+--------------------------------------------------------------------+
| 'THIS ' || 'IS ' || 'ANOTHER ' || 'CONCATENATION ' || 'TECHNIQUE.' |
|--------------------------------------------------------------------|
| This is another concatenation technique.                           |
+--------------------------------------------------------------------+

더 알아보기