본문 바로가기
🎪 놀고있네/MS SQL

[SQL Server] 문자 합치기(CONCAT, CONCAT_WS)

by 냥장판 2019. 12. 25.

목표: 문자 합치기(CONCAT, CONCAT_WS)

요약

  1. 구분자를 넣을 수 있는 CONCAT_WS

안녕하세요 냥장판 입니다🐱‍👤🐱‍👤

 

이번 게시글에서는 테이블에 있는 컬럼의 문자열을 합쳐서 표시하는 것을 해보겠습니다.

Excel 에도 문자를 연결시키는 CONCAT concatenate 함수가 있다.

MS SQL Server도 마찬가지로 CONCAT 이라는 이름의 함수가 있다.

CONCAT은 concatenate(연결하다, 결부시키다, 연관시키다) 단어의 줄임말이다.

 

 

아래와 같은 테이블이 있다.

 

여기서 Name, KoreanName, Role 컬럼의 문자열을 합쳐보겠다.

 

 


 

DBMS별 문자 연결 방법

 

 

테이블에서 문자열 컬럼1과 문자열 컬럼2를 결합시키는 방법은 DBMS 별로 다르다.

특히 연결 연산자가 그렇다.

RDBMS 종류 연결 연산자 함수
ORACLE 컬럼명1 || 컬럼명2 CONCAT(컬럼1, 컬럼2)
SQL Server 컬럼명1 + 컬럼명2
Mysql, MaraiaDB * (곱셈)
  • Oracle : 문자와 문자를 연결하는 경우 2개의 수직 바(||) 를 사용한다.
  • SQL Server : 문자와 문자를 연결하는 경우 + (더하기 연산자)를 사용한다.
  • 공통 : CONCAT 함수를 사용할 수 있다.

ORACLE 의 예시이다.

문자열 연결 연산자로 || 를 사용했다.

 

SQL Server에서 + 연산자를 사용해서 문자열을 연결시켜보겠다.

 

 

결과는 예상했는지 모르겠지만, 문자열이 공백 없이 모두 붙어서 출력된다.

 


 

연결 연산자를 사용하는 것도 방법이지만,

DBMS에서 제공하는 API인 CONCAT을 사용하는 것이 더 일반적이다.

 

1. CONCAT

 

CONCAT은 MySQL, MariaDB, Oracle, SQL Server 등 대부분의 DBMS에서 지원하는 함수다.

사용 방법은 아주 간단하다.

 

CONCAT(string1, string2, ...., string_n)

CONCAT(expression1, expression2, expression3,...)

MySQL에서는 expression 이라고도 표현하고, 우리가 알고있는 string과 동일하다고 보면된다.

 

위와 같이 CONCAT를 작성했다.

 

 

그런데 여기서 특이한 사항을 발견했다.

 

이렇게 가족 같은 나의 회사를 CONCAT 함수에 넣어봤는데,

어머머머 너도 회사가 싫구나!

CONCAT 함수만 단독적으로 사용하면 Unicode에서 지원하는 문자열을 출력할 수 없다.

즉, varchar 형식만 표현할 수 있는 것이다.

 

내가 가지고 있는 테이블과 CONCAT을 연결해서 사용해보겠다.

결과는 띄어쓰기 없이 문자열이 그대로 붙는다.

 

여기에 구분자를 사용해서 문자를 좀 띄워놓고 싶을때

CONCAT 함수에 구분자를 추가하면 된다.

결과는 구분자를 포함해서 문자열이 출력된다.

 

2. CONCAT_WS

 

CONCAT_WS 는 구분자(separator)가 가장 먼저 들어가고,

모든 string과 expression 을 해당 구분자로 구분하도록 해주는 함수이다.

사용 방법은 아래와 같다.

CONCAT_WS(separator, string1, string2, ...., string_n)

CONCAT_WS(separator, argument1, argument2, ..., argumentN)

이렇게 작성했다면, 아래와 같이 나온다.

테이블과 결합해서 사용하는 방법도 어렵지 않다.

 

구분자로 사용할 기호를 입력한다.

 

CONCAT과 CONCAT_WS 사용법에 대해서 알아보았다.

구현하려는 입력창의 특성에 따라 다른 함수를 사용하면 적절하겠다.


 

 

 

댓글