여러개의 컬럼을 하나의 컬럼으로 묶을때 "||" 사용하여 하나로 묶어서 수행합니다.
그러나 이렇게 했을 때 컬럼에 들어가 있는 값이 NULL인 경우 결과 값이 NULL로 출력되는 현상이 있습니다.
왜냐하면 모든 값이 NULL로 연산 처리 시 NULL로 출력됩니다.
그래서 NVL함수를 사용하여 결과 출력을 합니다.
또한 CUBRID에서도 NVL함수를 사용할 수도 있고, 다른 함수를 사용할 수 있습니다.
CONCAT_WS함수를 사용하여 처리하는 방법을 알려드리겠습니다.
아래의 4가지 질의문을 보시고, 원하는 질의문을 작성하시면 됩니다.
CREATE TABLE T_TBL( id integer not null primary key
, age integer
, name varchar(30)
);
INSERT INTO T_TBL(id, age, name) values(1, 10, '홍길동'), (2, 15, '홍길동2'), (3, 16, NULL);
1) NVL함수 사용 질의문
SELECT id, NVL(age,'') AS age, NVL(name,'') AS name FROM t_tbl;
=== <Result of SELECT Command in Line 1> ===
id age name
===================================
1 '10' '홍길동'
2 '15' '홍길동2'
3 '16' ''
===================================
2) 컬럼 끼리 묶을때 NVL함수 사용 질의문 ("||")
SELECT id, NVL(age,'')||'/'||NVL(name,'') AS age_name FROM t_tbl;
=== <Result of SELECT Command in Line 1> ===
id age_name
===================================
1 '10/홍길동'
2 '15/홍길동2'
3 '16/'
===================================
3) 컬럼 끼리 묶을때 CONCAT_WS함수 사용 질의문
SELECT id, CONCAT_WS('', age, name) AS age_name FROM t_tbl;
=== <Result of SELECT Command in Line 1> ===
id age_name
===================================
1 '10홍길동'
2 '15홍길동2'
3 '16'
===================================
4) 컬럼 끼리 묶을때 CONCAT_WS함수 사용 질의문
-> 나이와 이름 사이에 "/" 넣고 싶을 때
SELECT id, CONCAT_WS('/', age, name) AS age_name FROM t_tbl;
=== <Result of SELECT Command in Line 1> ===
id age_name
===================================
1 '10/홍길동'
2 '15/홍길동2'
3 '16'
===================================