반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- SQL
- 자바기초
- 국비지원
- cleanbuild
- oauth
- mariadb
- SpringFramework
- 불친절한SQL
- 패캠
- 오라클
- 자바
- RDBMS
- Oracle
- 클린빌드
- 기초쿼리
- 자바문제
- 소셜로그인
- 자바연습문제
- devcamp
- java
- ApplicationContext
- 남궁성
- 스프링의정석
- Spring
- 인프런
- 스프링
- 자바의정석
- 패스트캠퍼스
- 쿼리
- MySQL
Archives
- Today
- Total
Darren's Devlog
[불친절한SQL] 기초쿼리, 널 관련 함수 본문
반응형
○ 널 관련 함수
NULL을 처리하는 함수다.
NVL 함수
expr1이 널이 아니면 expr1, 널이면 expr2를 반환한다.
NVL(expr1, expr2)
SELECT NVL(1, 2) AS c1, NVL (NULL, 2) AS c2 FROM DUAL;
SELECT ename, sal, comm, sal + comm AS c1, sal + NVL(comm, 0) AS c2 FROM emp;
NVL2 함수
expr1이 널이 아니면 expr2, 널이면 expr3를 반환한다.
삼항 연산자와 유사하다고 느껴진다.
NVL2(expr1, expr2, expr3)
SELECT NVL2(1, 2, 3) AS c1, NVL2(NULL, 2, 3) AS c2 FROM DUAL;
SELECT ename, sal, comm, sal + (sal * NVL2(comm, 0.1, 0.2)) AS c1 FROM emp;
COALESCE 함수
NULL이 아닌 첫 번째 expr을 반환한다.
SELECT COALESCE(1, 2, 3) AS c1, COALESCE(NULL, 2, 3) AS c2
, COALESCE(NULL, NULL, 3) AS c3
FROM DUAL;
NVL, NVL2 함수는 모든 인수를 평가한다. 이로 인해 에러나 부하가 발생할 수 있다.
아래에서 NVL 함수를 사용한 쿼리는 에러가 발생했다. 평가할 필요가 없는 1/0을 평가 했기 때문이다.
COALESCE 함수를 사용한 쿼리는 에러가 발생하지 않는다.
--SELECT NVL(1, 1/0) AS c1 from DUAL; --에러 ORA-01476: 제수가 0 입니다
SELECT COALESCE (1, 1/0) AS c1 FROM DUAL;
--SELECT NVL2(1, 2, 1/0) AS c1 from DUAL; --에러 ORA-01476: 제수가 0 입니다
SELECT DECODE(1, NULL, 1/0, 2) AS c1 FROM DUAL;
SELECT CASE WHEN 1 IS NULL THEN 1/0 ELSE 2 END AS c1 FROM DUAL;
NULLIF 함수
expr1과 expr2가 다르면 expr1을 반환하고 다르면 NULL을 반환한다.
NULLIF(expr1, expr2)
SELECT NULLIF(1, 1) AS c1, NULLIF(1, 2) AS c2 FROM DUAL;
반응형
'SQL' 카테고리의 다른 글
[불친절한SQL] 기초쿼리, 인코딩 디코딩 함수 (1) | 2022.12.04 |
---|---|
[불친절한SQL] 기초쿼리, 비교 함수 (0) | 2022.12.03 |
[불친절한SQL] 기초쿼리, 변환 함수 (0) | 2022.12.03 |
[불친절한SQL] 기초쿼리, 날짜 함수 (3) | 2022.11.30 |
[불친절한SQL] 기초쿼리, 숫자 함수 (0) | 2022.11.29 |
Comments