MS-SQL 문자열 합치는 방법

SQL MS-SQL

문제점 😅

어느 프로젝트에서 일을 하더라도, 문자열 합치는 일은 항상 마주칠 것이다. MS-SQL을 사용중이므로 정리해 본다.

해결책 😏

여러 방법이 있지만, 역시 내장함수를 사용하는 것이 좋겠다.

CONCAT() 함수 사용

CONCAT ( string_value1, string_value2 [, string_valueN ] )

CONCAT() 함수는 파라미터를 모두 합쳐주는 함수다. CONCAT() 함수는 많은 DB에서 사용 가능한 ANSI SQL 함수이며, 함수에 입력된 값은 문자형으로 변환 후 합치는 작업이 이루어진다. 따라서 파라미터에 숫자와 문자가 함께 입력되도 오류가 발생하지 않는다!

SELECT CONCAT('Welcome', 'My', 'Devlog') -- WelcomeMyDevlog
      ,CONCAT('Welcome', ' My ', 'Devlog') -- Welcome My Devlog
      ,CONCAT('오늘은 ', 2023, '년 ', '9월 ', 11, '일') -- 오늘은 2023년 9월 11일
;

CONCAT_WS() 함수 사용

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

CONCAT_WS() 함수는 입력하는 파라미터 문자열 사이에 특정한 구분자를 넣어야 할 때 유용하다.

SELECT CONCAT_WS(' ', 'I', 'Like', 3, 'pizza') -- I Like 3 pizza
      ,CONCAT_WS('.', 'byeoom', 'github', 'io') -- byeoom.github.io
;

(+)기호를 사용하는 방법

(+)기호를 사용하여 문자열을 붙이는 방법도 있다. 그러나 이 경우 숫자와 문자를 함께 혼용하는 경우 에러가 발생하므로 주의해야 한다.

-- BAD : 3000을 문자형으로 변환하지 않았기 때문에 에러 발생
SELECT 'I'+' Love'+' You '+3000+'%' -- Error
;

-- GOOD 1 : 숫자를 홑따옴표로 감싸서 문자형으로 강제 변환
SELECT 'I'+' Love'+' You '+'3000'+'%' -- I Love You 3000%
;

-- GOOD 2 : CAST()를 사용하여 문자형으로 강제 변환
SELECT 'I'+' Love'+' You '+CAST(3000 AS VARCHAR)+'%' -- I Love You 3000%
;

마무리 😎

MS-SQL에서 문자열을 합쳐야 할 경우에는 CONCAT() 함수 또는 CONCAT_WS() 함수를 사용하자.

참고문헌 📝

https://gent.tistory.com/437
https://m.blog.naver.com/dnjswls23/222954082885