NVL(인수1, 인수2)
: 인수1 값이 NULL이면 인수2를 반환, NULL이 아니면 인수1을 반환해주는 함수
SQL Server(MSSQL)에서는 ISNULL(인수1, 인수2)
예: NVL(REVIEW_SCORE, 0)
-> REVIEW_SCORE (컬럼) 데이터가 NULL이면 0을 반환하고, NULL이 아니면 REVIEW_SCORE 값을 반환
NULLIF(인수1, 인수2)
: 인수1 == 인수2이면 NULL을 반환, 인수1 != 인수2이면 인수1을 반환해주는 함수
예: NULLIF(REVIEW_SCORE, 0)
-> REVIEW_SCORE (컬럼) 데이터가 0일 경우 NULL을 반환, 0이 아닐 경우 REVIEW_SCORE 값을 반환
COALESCE(인수1 ,인수2, 인수3...)
: NULL이 아닌 최초의 인수를 반환해주는 함수
예: COALESCE(PHONE, EMAIL, FAX)
-- 전체 코드
-- NVL(인수1, 인수2): 인수1값이 NULL이면 인수2 반환, 아닐 경우 인수1 반환
create table REVIEW(
PRODUCT_ID number(6),
MEMBER_NO number(2),
REVIEW_SCORE number(2),
REVIEW varchar2(72)
);
select * from REVIEW;
insert into REVIEW values(100001, 1, 5, '넘나 좋다는 것');
insert into REVIEW values(100002, 3, null, null);
insert into REVIEW values(100003, 4, 1, '뚫어 송태섭');
insert into REVIEW values(100004, 7, 3, '영감님의 영광의 시대는 언제였나요, 전 지금이거든요');
select * from REVIEW;
-- nvl(인수1, 인수2): 인수1 값이 null이면 인수2 반환, 인수1 값이 null이 아니면 인수1 반환
select MEMBER_NO, nvl(REVIEW_SCORE, 0) as REVIEW_SCORE from REVIEW;
select * from review;
-- nullif(인수1, 인수2): 인수1==인수2이면 null 반환, 인수1!=인수2이면 인수1 반환
select MEMBER_NO, nullif(REVIEW_SCORE, 0) as REVIEW_SCORE, REVIEW from REVIEW;
create table MEMBERINFO(
MEMBER_NO number(2),
NAME varchar2(9),
PHONE varchar2(30),
EMAIL varchar2(30),
FAX varchar2(30)
);
insert into MEMBERINFO values(1, '이나경', null, 'abcc@efg.com', '+82 (02) 428-0001');
insert into MEMBERINFO values(2, '송하영', '+82 (022) 262-3441', 'abcf@efg.com', null);
insert into MEMBERINFO values(3, '박지원', null, 'abcd@efg.com', '+82 (02) 428-0003');
insert into MEMBERINFO values(4, '이채영', '+82 (022) 262-3443', null, '+82 (02) 428-0004');
insert into MEMBERINFO values(5, '백지헌', null, 'abce@efg.com', null);
insert into MEMBERINFO values(6, '이서연', '+82 (022) 262-3446', 'abcg@efg.com', '+82 (02) 428-0006');
insert into MEMBERINFO values(7, '노지선', null, null, '+82 (02) 428-0007');
select * from MEMBERINFO;
-- coalesce(인수1, 인수2, 인수3 ...): null이 아닌 최초의 인수를 반환해주는 함수
select NAME, coalesce(PHONE, EMAIL, FAX) as CONTACT from MEMBERINFO;