SQL

MS-SQL CONCAT를 활용한 다중 컬럼 검색

100ksoft 2024. 12. 22. 22:51

문법

CONCAT(string1, string2, ..., stringN)
 
  • string1, string2, ..., stringN: 연결할 문자열 또는 값을 지정합니다.
  • 최소 2개 이상의 인수를 받아야 하며, 최대 인수 개수는 254개입니다.

특징

  1. 자동 데이터 타입 변환: 숫자, 날짜, 또는 기타 데이터 타입을 문자열로 자동 변환하여 연결합니다.
  2. NULL 처리: NULL 값은 빈 문자열로 처리되며, 결과에 영향을 미치지 않습니다.
  3. 간단한 사용법: + 연산자보다 직관적이고, 데이터 타입 변환을 별도로 지정할 필요가 없습니다.

사용 예제

1. 기본 문자열 연결

SELECT CONCAT('Hello', ' ', 'World') AS Result;
-- 결과: Hello World

2. 숫자와 문자열 연결

SELECT CONCAT('Order Number: ', 12345) AS Result;
-- 결과: Order Number: 12345

3. 날짜와 문자열 연결

SELECT CONCAT('Today is ', GETDATE()) AS Result;
-- 결과: Today is Jan 22 2025 12:34PM

4. NULL 값 처리

SELECT CONCAT('Part1', NULL, 'Part3') AS Result;
-- 결과: Part1Part3

비교: + 연산자와의 차이

+ 연산자

  • NULL 값이 있으면 결과가 NULL이 됩니다.
  • 수동으로 데이터 타입을 변환해야 할 수도 있습니다.
SELECT 'Part1' + NULL + 'Part3' AS Result;
-- 결과: NULL

CONCAT 함수

  • NULL은 빈 문자열로 간주됩니다.
  • 자동으로 데이터 타입을 문자열로 변환합니다.
SELECT CONCAT('Part1', NULL, 'Part3') AS Result;
-- 결과: Part1Part3

복잡한 예제

테이블에서 여러 열을 연결

SELECT CONCAT(FirstName, ' ', LastName, ' - ID: ', EmployeeID) AS FullInfo
FROM Employees;

형식을 지정하여 연결

SELECT CONCAT('Today is ', FORMAT(GETDATE(), 'yyyy-MM-dd')) AS Result;
-- 결과: Today is 2025-01-22

주의사항

  1. 데이터 타입 자동 변환: 데이터 타입 변환이 의도하지 않은 결과를 초래할 수 있으므로, 필요한 경우 CAST나 CONVERT를 사용해 명시적으로 변환하세요.
  2. 호환성: SQL Server 2012 이전 버전에서는 사용할 수 없으므로, 이 경우 + 연산자나 CAST/CONVERT를 조합해 사용해야 합니다.