MS-SQL 문자열 합치는 방법
SQL MS-SQL
문제점 😅
어느 프로젝트에서 일을 하더라도, 문자열 합치는 일은 항상 마주칠 것이다. MS-SQL을 사용중이므로 정리해 본다.
해결책 😏
여러 방법이 있지만, 역시 내장함수를 사용하는 것이 좋겠다.
CONCAT() 함수 사용
CONCAT ( string_value1, string_value2 [, string_valueN ] )
- string_value: 다른 값에 연결할 문자열 값. 인수 갯수는 2 ~ 254개 까지 가능.
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]... )
- separator: 구분자.
- argument: 다른 값에 연결할 문자열 값. 인수 갯수는 2 ~ 254개 까지 가능.
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