착해지는 중 입니다.

[SQL] 중첩 함수 및 NULL 관련 함수 본문

BackEnd/Sql

[SQL] 중첩 함수 및 NULL 관련 함수

박쓸개 2024. 5. 7. 16:11

###함수중첩

 

###NULL관련함수

형식 : NVL2 (EXPR1, EXPR2, EXPR3)

설명 : EXPR1 이 NULL이면 EXPR3 반환, NULL이 아니면 EXPR2 반환

(EXPR2와 EXPR3의 타입이 같거나 자동 변환 가능해야함. EXPR1의 데이터 타입과 같을 필요없음)

SELECT last_name, commission_pct, NVL(commission_pct, '0') --문자열이 숫자로 자동변환됨
FROM EMPLOYEES;

SELECT last_name, commission_pct, 
NVL(commission_pct, 0), NVL2(commission_pct,'커미션없음','커미션있음') --입력받은 값과 타입이다를떄 사용
--NVL2는 날짜값이 있으면 0없으면 1 이런식으로 사용
FROM EMPLOYEES;

 

COALESCE

형식 : COALESCE(expr1, expr2, ..., expr_n)

COALESCE 함수는 여러 개의 인수 중에서 NULL이 아닌 첫 번째 값을 반환하는 함수

모든인자는 동일한 데이터 타입이어야 하며 모든인자가 NULL일경우 NULL반환

SELECT LAST_NAME, employee_id,commission_pct, manager_id,
COALESCE(TO_CHAR(commission_pct),TO_CHAR(manager_id),
--커미션 비율이나 관리자 ID가 NULL이라면 'NO COMMISSION AND NO MANAGER' 문자열을 결과로 반환
'NO COMMISSION AND NO MANAGER') AS RESULT
FROM EMPLOYEES;

 

 

NULLIF

형식 : NULLIF(EXPR1, EXPR2)

두 표현식EXPR1 EXPR2를 비교해서 같으면 NULL,다르면 EXPR1 반환.

EXPR1 에 NULL값을 직접 지정할 수 없음

SELECT first_name, LENGTH(FIRST_NAME) "EXPR1",
LAST_NAME, LENGTH(LAST_NAME) "EXPR2",
NULLIF(LENGTH(FIRST_NAME), LENGTH(LAST_NAME)) AS 결과 --같은경우 NULL, 다를경우 EXPR1반환
FROM EMPLOYEES;

 

LNNVL

형식 : LNNVL(조건식)

인자로 받은 조건식의 결과가 거짓 또는 NULL인 경우 참을 반환

함수의 입력이 조건식임!

SELECT COUNT(*) -- *
FROM EMPLOYEES
WHERE LNNVL(commission_pct >=0.2); -- 커미션을 20%미만으로 받거나 전혀받지않는 사원