"LNNVL 함수"의 두 판 사이의 차이
DB CAFE
(→LNNVL) |
|||
(같은 사용자의 중간 판 5개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
− | “ logical not null value “ | + | == LNNVL == |
+ | {{틀:고지 상자 | ||
+ | |내용=“ logical not null value “ | ||
− | + | * LNNVL 함수는 해당 컬럼에 NULL이 존재할 경우 NULL 처리와 조건문을 한 번에 연산하기 위해서 사용 | |
− | LNNVL 함수는 아래의 상황일 때 조건이 TRUE이다. | + | * LNNVL 함수는 아래의 상황일 때 조건이 TRUE이다. |
+ | ** 컬럼이 NULL인 경우 = TRUE | ||
+ | ** 함수 내부 조건이 FALSE인 경우 = TRUE | ||
− | + | * 오라클의 NULL 처리를 정확히 이해 하기 | |
− | + | }} | |
− | + | ||
− | 오라클의 NULL 처리를 정확히 | + | * 오라클 NULL 사용시 주의사항 정리 |
− | |||
− | |||
사용 예시 - 1 | 사용 예시 - 1 | ||
− | + | <source lang=sql> | |
SELECT ename | SELECT ename | ||
, job | , job | ||
20번째 줄: | 22번째 줄: | ||
WHERE deptno = 30 | WHERE deptno = 30 | ||
AND LNNVL(comm = 0) | AND LNNVL(comm = 0) | ||
− | + | </source> | |
− | + | <source lang=sql> | |
LNNVL(comm = 0) | LNNVL(comm = 0) | ||
- comm is null | - comm is null | ||
- comm != 0 | - comm != 0 | ||
+ | </source> | ||
− | 위의 2가지 조건을 한 번에 조건문을 선언한 것과 동일하다. | + | * 위의 2가지 조건을 한 번에 조건문을 선언한 것과 동일하다. |
− | + | ||
+ | <source lang=sql> | ||
SELECT ename | SELECT ename | ||
, job | , job | ||
35번째 줄: | 39번째 줄: | ||
WHERE deptno = 30 | WHERE deptno = 30 | ||
AND (comm is null OR comm != 0) | AND (comm is null OR comm != 0) | ||
− | + | </source> | |
− | LNNVL(comm = 0)과 동일한 결과가 조회되는 것을 | + | * LNNVL(comm = 0)과 동일한 결과가 조회되는 것을 확인 |
− | + | * LNNVL 함수를 사용하는 이유는 해당 컬럼에 NULL이 존재할 경우 해당 NULL 데이터도 함께 조회되도록 하기 위해서 | |
− | LNNVL 함수를 사용하는 이유는 해당 컬럼에 NULL이 존재할 경우 해당 NULL 데이터도 함께 조회되도록 하기 | + | * LNNVL 함수 내부의 조건은 조회하려고 하는 조건의 반대 조건으로 부여하는 것을 기억해야 한다. |
− | |||
− | LNNVL 함수 내부의 조건은 조회하려고 하는 조건의 반대 조건으로 부여하는 것을 기억해야 한다. | ||
사용 예시 - 2 | 사용 예시 - 2 | ||
− | + | <source lang=sql> | |
SELECT ename | SELECT ename | ||
, job | , job | ||
52번째 줄: | 54번째 줄: | ||
WHERE deptno = 30 | WHERE deptno = 30 | ||
AND LNNVL(comm > 300) | AND LNNVL(comm > 300) | ||
− | + | </source> | |
− | LNNVL(comm > 300) | + | ;LNNVL(comm > 300) |
− | - 커미션(comm)이 300 이하의 직원을 조회하는 쿼리이다. | + | :- 커미션(comm)이 300 이하의 직원을 조회하는 쿼리이다. |
아래의 조건과 동일한 결과이다. | 아래의 조건과 동일한 결과이다. | ||
− | - comm is null OR comm <= 300 | + | :- comm is null OR comm <= 300 |
− | - NVL(comm, 0) <= 300 | + | :- NVL(comm, 0) <= 300 |
− | + | ||
+ | <source lang=sql> | ||
SELECT ename | SELECT ename | ||
, job | , job | ||
68번째 줄: | 71번째 줄: | ||
WHERE deptno = 30 | WHERE deptno = 30 | ||
AND NVL(comm, 0) <= 300 | AND NVL(comm, 0) <= 300 | ||
+ | </source> | ||
+ | |||
+ | * LNNVL(comm > 300) 조건과 NVL(comm, 0) <= 300 조건이 항상 동일한 결과라고 생각하면 안 된다. | ||
+ | * 위의 경우는 NULL이 300 이하라고 판단한 경우만 동일한 결과가 출력된다. | ||
+ | * 만약 comm이 300 이상인 직원과 comm이 NULL인 직원을 동시에 조회한다면 LNNVL(comm < 300) 이렇게 조건을 부여할 수 있으며, NVL(comm, 0) >= 300은 잘못된 결과를 출력한다. | ||
− | + | [[category:oracle]] | |
− | |||
− | |||
− |
2023년 7월 6일 (목) 09:06 기준 최신판
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
LNNVL[편집]
android “ logical not null value “
- LNNVL 함수는 해당 컬럼에 NULL이 존재할 경우 NULL 처리와 조건문을 한 번에 연산하기 위해서 사용
- LNNVL 함수는 아래의 상황일 때 조건이 TRUE이다.
- 컬럼이 NULL인 경우 = TRUE
- 함수 내부 조건이 FALSE인 경우 = TRUE
- 오라클의 NULL 처리를 정확히 이해 하기
- 오라클 NULL 사용시 주의사항 정리
사용 예시 - 1
SELECT ename
, job
, comm
FROM emp
WHERE deptno = 30
AND LNNVL(comm = 0)
LNNVL(comm = 0)
- comm is null
- comm != 0
- 위의 2가지 조건을 한 번에 조건문을 선언한 것과 동일하다.
SELECT ename
, job
, comm
FROM emp
WHERE deptno = 30
AND (comm is null OR comm != 0)
- LNNVL(comm = 0)과 동일한 결과가 조회되는 것을 확인
- LNNVL 함수를 사용하는 이유는 해당 컬럼에 NULL이 존재할 경우 해당 NULL 데이터도 함께 조회되도록 하기 위해서
- LNNVL 함수 내부의 조건은 조회하려고 하는 조건의 반대 조건으로 부여하는 것을 기억해야 한다.
사용 예시 - 2
SELECT ename
, job
, comm
FROM emp
WHERE deptno = 30
AND LNNVL(comm > 300)
- LNNVL(comm > 300)
- - 커미션(comm)이 300 이하의 직원을 조회하는 쿼리이다.
아래의 조건과 동일한 결과이다.
- - comm is null OR comm <= 300
- - NVL(comm, 0) <= 300
SELECT ename
, job
, comm
FROM emp
WHERE deptno = 30
AND NVL(comm, 0) <= 300
- LNNVL(comm > 300) 조건과 NVL(comm, 0) <= 300 조건이 항상 동일한 결과라고 생각하면 안 된다.
- 위의 경우는 NULL이 300 이하라고 판단한 경우만 동일한 결과가 출력된다.
* 만약 comm이 300 이상인 직원과 comm이 NULL인 직원을 동시에 조회한다면 LNNVL(comm < 300) 이렇게 조건을 부여할 수 있으며, NVL(comm, 0) >= 300은 잘못된 결과를 출력한다.