Notice
Recent Posts
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

IT'S YU

[Oracle] sql 여러 컬럼을 한 컬럼에 출력하기 본문

DB/Oracle

[Oracle] sql 여러 컬럼을 한 컬럼에 출력하기

자석 2022. 4. 25. 10:51

컬럼 A와 컬럼 B를 한 컬럼에 이어붙이기 

 

1) 첫번째 방법 시도,,

CASE WHEN 구문을 사용해서 아래 쿼리로 사용하려고 했으나 일관성 없는 데이터 유형 CLOB이라는 오류가 뜸

SELECT CASE WHEN A IS NOT NULL AND B IS NOT NULL THEN A || ',' || B

        WHEN A IS NOT NULL AND B IS NULL THEN A

        WHEN A IS NULL AND B IS NOT NULL THEN B

        WHEN A IS NULL AND B IS NULL THEN ''

        ELSE '' END

FROM TEST

;

 

 

2) 두번째 방법 시도,, 

CONCAT(CONCAT(A, ','), B) 또는 A || ',' || B를 사용하면

A와 B 중 NULL인 경우가 있으면 ,(콤마) 만 출력되게 됨..

COALESCE(A,B)를 사용하면 A가 NULL이 아니면 B에 값이 있어도 A만 출력되기 때문에 부적합..

 

 

3) 세번째 방법

CASE WHEN 구문 안에 CONCAT이랑 COALESCE를 사용했더니 해결됨!

SELECT CASE WHEN A IS NOT NULL AND B IS NOT NULL THEN CONCAT(CONCAT(A, ',') B)

                  ELSE COALESCE(A,B)

           END 

FROM TEST

;

 

 

* CONCAT 

https://m.blog.naver.com/regenesis90/222181036571

 

[오라클/SQL] CONCAT, || : 문자열 연결 함수, 컬럼 문자열 연결 연산자 - 컬럼의 값을 붙여 조회하기

두 개 이상의 컬럼을 합쳐 하나의 문자열 컬럼으로 표시하거나, 컬럼 몇 가지의 데이터를 이용해 완성된 문...

blog.naver.com

 

* COALESCE(col1, col2, col3, ...) : null이 아닌 첫번째 값을 반환하는 함수

https://jhnyang.tistory.com/387

 

[오라클 MySQL] COALESCE 두 개 컬럼 중 존재하는 값으로 합치고 싶을 때, 컬럼 병합하는 함수, 여러

[DBMS 데이터베이스 SQL 완전정복 목차] 안녕하세요 양햄찌 블로그 주인장입니다. 오늘은 SQL 함수 중 COALESCE 에 대해 작성하려고 해요. COALESCE 자체가 원래 기본적으로 합치다 라는 뜻이 있죠?? 넹

jhnyang.tistory.com