이 글은 SQL의 CONCAT 설명, MySQL CONCAT과 ||의 유의점
그리고 컬럼(필드) 문자열 합치는 CONCAT 사용 방법을 예시와 함께 담고있습니다.
SQL CONCAT
SQL의 CONCAT은 컬럼(필드) 문자열들을 결합해서 하나의 열로 표현할 때 사용합니다.
이때 CONCAT은 연산자 ||(더블 버티컬 바, Double Vertical bars)로도 사용할 수 있습니다.
MySQL CONCAT과 || 유의점
문자열 결합 시, ||를 입력하는 게 훨씬 보기 좋고 편합니다.
하지만 안타깝게도... MySQL은 CONCAT을 사용해야 합니다.
보통 CONCAT을 ||로 많이 사용하지만, MySQL에서 ||는 'Logical OR(논리연산자 OR)'입니다.
SELECT 컬럼1, 컬럼2,..., 컬럼N
FROM 테이블명
WHERE 조건식1 OR 조건식2;
SELECT 컬럼1, 컬럼2,..., 컬럼N
FROM 테이블명
WHERE 조건식1 || 조건식2;
MySQL ||(Double Vertical bars) 유의점 예시
다른 DBMS에서 사용하는 것처럼, MySQL에 ||를 입력하면 다음과 같이 이상한 산출물이 나옵니다.
MySQL OR과 || 예시
WHERE 조건식인 dep_name='마케팅' OR gender='F'; 산출물(위),
dep_name='마케팅' || gender='F'; 산출물(아래)이 같음을 확인할 수 있습니다.
MySQL CONCAT 컬럼(필드) 문자열 합치기
MySQL에서 CONCAT 사용 방법은 다음과 같습니다.
합치려는 컬럼들을 CONCAT 뒤 괄호 안에 쉼표와 함께 입력합니다.
SELECT CONCAT(컬럼1, 컬럼2)
FROM 테이블명;
하지만 위와 같이 입력하면, 문자열들이 띄어쓰기 없이 결합되어 보기 어렵습니다.
그래서 결합할 문자열들 간 띄어쓰기를 원한다면 아래와 같이 입력합니다.
SELECT CONCAT(컬럼1, ' ', 컬럼2)
FROM 테이블명;
CONCAT과 띄어쓰기 예시
띄어쓰기 없는 예시입니다.
SELECT CONCAT(staff_name, dep_name)
FROM clerk;
띄어쓰기를 포함한 예시입니다.
SELECT CONCAT(staff_name, ' ', dep_name)
FROM clerk;
샘플 테이블 info_account입니다.
info_account | ||
account_no | gender | age |
12345 | F | 30 |
23415 | 42 | |
45921 | M | 60 |
20312 | M | 51 |
26513 | M | 27 |
56941 | F | 33 |
92183 | 29 |
고객 분류 segment를 '성별(연령)' 형태로 분류 및 카운트
SELECT CONCAT(
CASE WHEN LENGTH(gender) < 1 THEN '기타'
WHEN gender = 'F' THEN '여성'
WHEN gender = 'M' THEN '남성'
END
, '('
, CASE WHEN age <= 29 THEN '20대'
WHEN age <= 39 THEN '30대'
WHEN age <= 49 THEN '40대'
WHEN age >= 50 THEN '50대 이상'
END
, ')'
) AS segment
, COUNT(*) AS count
FROM info_account
GROUP BY segment
ORDER BY count DESC;
segment | count |
여성(30대) | 2 |
남성(50대 이상) | 2 |
기타(40대) | 1 |
남성(20대) | 1 |
기타(20대) | 1 |
'SQL > MySQL' 카테고리의 다른 글
MySQL 컬럼 추가 ADD 위치 지정, 여러 개 추가하는 쉬운 방법 예시 (0) | 2023.08.31 |
---|---|
MySQL LIKE 여러 개 검색(LIKE IN), REGEXP 사용 방법 (0) | 2023.08.30 |
MySQL 별칭 ALIAS 사용 방법, 규칙, 차이점 (2) | 2023.08.28 |
MySQL 중복 제거 DISTINCT 쉬운 사용법 예시 (0) | 2023.08.26 |
MySQL 관계형 데이터베이스(RDB), 테이블 JOIN 기초 설명 예시 (1) | 2023.08.24 |