MySQL에서 문자열을 합치기 위해서 여러 가지 문법을 사용할 수 있다. 주의할 점은 +로는 문자열을 합칠 수 없다는 것 ! Python과 헷갈리지 말자
CONCAT() 함수를 사용할 때 주의할 점은 NULL이 포함되면 결과가 NULL이 된다는 것이다.
-- 기본형: CONCAT(str1, str2, ...)
SELECT CONCAT('Hello', NULL, 'World') AS result;
-- 결과: NULL
이를 방지하기 위해서 IFNULL() 또는 COALESCE()를 사용할 수 있다.
-- 기본형: expression이 NULL이면 default_value 반환
IFNULL(expression, default_value)
-- 기본형: 첫번째로 NULL이 아닌 값을 반환
COALESCE(value1, value2, ..., valueN)
CONCAT_WS()은 NULL값을 무시하고 연결한다.
-- 기본형: CONCAT_WS(separator, str1, str2, ...)
SELECT CONCAT_WS(', ', 'Apple', 'Banana', 'Cherry') AS result;
-- 결과: Apple, Banana, Cherry
SELECT CONCAT_WS(', ', 'Apple', NULL, 'Cherry') AS result;
-- 결과: Apple, Cherry
GROUP_CONCAT() 함수는 여러 행의 값을 하나의 문자열로 결합하는 데 사용된다. 정렬은 되지 않는다. 정렬을 하려면 ORDER BY 옵션을 사용해야 한다.
name 컬럼의 값이 기본 구분문자인 ,로 연결되어 하나의 문자열로 반환된다.
SELECT GROUP_CONCAT(name) AS names_list
FROM users;
GROUP BY를 활용하여 특정 그룹별로 문자열을 연결 할 수 있다.
SELECT department, GROUP_CONCAT(name ORDER BY name ASC SEPARATOR ' | ') AS employee_names
FROM employees
GROUP BY department;