반응형
이번 게시글에선 MySQL 에서 SELECT 할 때 조회 된 데이터들 사이에 구분자 ( , ) 를 넣어 조회해보도록 하겠다.
필자는 뚱이, 홍길동, 코난이 각각 과일을 얼마나 먹었는지가 궁금하다고 가정했다.
아래와 같은 TB_TEST 테이블이 있다고 가정해보자.
FRUIT 컬럼을 보면 뚱이는 bbbbb, 홍길동은 aaabb, 코난은 abaaa 데이터가 들어가 있다.
무엇을 하고 싶었냐면 저 알파벳 5 자리의 의미는 아래와 같다.
1 번째 자리 : 사과
2 번째 자리 : 딸기
3 번째 자리 : 바나나
4 번째 자리 : 파인애플
5 번째 자리 : 키위
필자는 각 자리에 a 가 들어가 있다면 이 과일을 먹지 않은 것이고 b 가 들어가 있다면 이 과일을 먹었다고 가정했다.
예를 들어 aabab 라면? 3 번째 자리와 5 번째 자리가 b 이기에 바나나와 키위를 먹은 것이다.
이러한 가정을 전제로 삼아 본론의 주제인 MySQL의 문자열과 구분자 합쳐서 조회하기를 해보도록 하자.
MySQL 에서는 CONCAT 과 CONCAT_WS 라는 명령어를 지원한다.
CONCAT은 조회되는 데이터들을 합쳐서 조회해주고,
CONCAT_WS는 조회되는 데이터들을 합쳐서 조회해주지만 구분자를 넣어 조회해준다.
그 중 필자가 필요한 CONCAT_WS를 사용해보자
SELECT NM,
CONCAT_WS(',',(CASE WHEN (SUBSTR(FRUIT, 1, 1) = 'b') THEN '사과' END),
(CASE WHEN (SUBSTR(FRUIT, 2, 1) = 'b') THEN '딸기' END),
(CASE WHEN (SUBSTR(FRUIT, 3, 1) = 'b') THEN '바나나' END),
(CASE WHEN (SUBSTR(FRUIT, 4, 1) = 'b') THEN '파인애플' END),
(CASE WHEN (SUBSTR(FRUIT, 5, 1) = 'b') THEN '키위' END)
)AS FRUIT
FROM TB_TEST;
CASE 문을 사용했으며 SUBSTR를 통해,
각 첫 번째 글자부터 다섯 번째 글자까지 잘라 'b' 이면 과일을 내보냈다.
그럼 결과는? 아래와 같다.
반응형
'Coding Story > DATABASE' 카테고리의 다른 글
[ Oracle ] 오라클 중복데이터 처리, 중복데이터 한번만 (0) | 2020.10.28 |
---|---|
[ Oracle ] 프로시저와 함수의 차이 (7) | 2020.10.28 |
[ Database ] 제 1정규화, 제 2정규화, 제 3정규화 (3) | 2020.10.28 |
[ Database ] ER 다이어그램 / ERD 기호 및 표기법 (8) | 2020.10.28 |
[ Database ] IE 표기법과 BARKER 표기법 ( 참고용 ) (0) | 2020.10.28 |