오라클 NULL 처리
오라클 SELECT 쿼리를 작성하다 보면 null 데이터를 자주 접하게 됩니다.
널 일 때 다른 데이터로 치환하고 싶은 경우 간편하게 사용할 수 있는 오라클 내장 함수가 NVL, NVL2 입니다.
NVL은 단순히 null 여부만 판단하여 치환하는 함수인 반면,
NVL2는 null 일 경우 조건식을 넣어 decode 함수처럼 사용할 수 있습니다.
그럼 예시를 통해 사용 방법을 소개하고 주의사항도 공유드리겠습니다.
[ NVL을 처음 알게 되어 기뻐하는 어느 여성의 모습. ]
오라클 NULL 처리 함수 NVL
- 기본 형식 : NVL( null 검사할 컬럼 명, null 일 경우 )
- 사용 예시 : AAA가 null 이면 EMPTY 가 출력됩니다.
1
2
3
4
5
6
7
|
-- NVL( null 검사 할 컬럼, '천사' )
-- NVL( null 검사 할 컬럼, 1004 )
-- NVL( null 검사 할 컬럼, SYSDATE )
SELECT NVL( AAA, 'EMPTY' ) AS RESULT
FROM TEST_TABLE
;
|
cs |
NVL 함수는 null 인 경우에만 치환하는 기능 있습니다.
즉, NVL2 와는 다르게 null 일 때는 A, 아닐 때는 B와 같은 삼항 연산은 불가합니다.
위 쿼리에서 AAA 라는 컬럼은 null 인 것으로 간주하면 결과는 EMPTY 라는 텍스트가 찍힙니다.
다만 주의할 사항이 있는데요, 바로 함수의 입력 파라미터의 데이터 타입이 일치해야 한다는 겁니다!
예를 들어 AAA 컬럼 타입이 NUMBER 형인데, 대체 자료형이 STRING 이면 오류가 아래와 같이 납니다.
또한 AAA 컬럼 타입이 STRING 인데, 대체 자료형이 DATE 타입이면 안 되겠죠?
때문에 검사할 컬럼의 자료형에 맞게 대체 데이터를 형변환해주어야 합니다.
예를 들어 칼럼이 DATE 타입이면, 대체 자료형은 TO_DATE 로 변환해야 할 거고,
STRING 타입이었으면 대체 데이터에 || ''을 붙여서 문자형으로 바뀌도록 설정하면 됩니다.
오라클 NULL 처리 함수 NVL2
- 기본 형식 : NVL( null 검사할 컬럼, null 이 아닐 경우, null 일 경우 )
- 사용 예시 : AAA가 null 이면 EMPTY 가 출력,
1
2
3
4
5
6
7
|
-- NVL2( null 검사 할 컬럼, '천사', '아크마' )
-- NVL2( null 검사 할 컬럼, '천사', 404 )
-- NVL2( null 검사 할 컬럼, '천사', SYSDATE )
SELECT NVL2( AAA, BBB, 'EMPTY' ) AS RESULT
FROM TEST_TABLE
;
|
cs |
비슷하지만 다른 함수인 NVL2는 DECODE 또는 IF ELSE 처럼 사용할 수 있습니다.
즉, NVL은 ELSE 만 사용할 수 있다면 NVL2는 IF ELSE 처럼 null일 경우와 null이 아닌 경우 모두 치환할 수 있습니다.
위 쿼리에서 AAA 라는 컬럼이 null 이 아니면 결과는 BBB 컬럼의 데이터가 나오고,
null 이면 'EMPTY'라는 텍스트가 찍힐 것입니다.
신기한 점은 NVL 와는 반대로 자료형이 일치하지 않아도 괜찮습니다.
예를 들어, AAA 컬럼 타입이 DATE 인데, 대체 데이터가 STRING 이나 NUMBER도 가능합니다.
그럼 이것으로 오라클 널 처리 함수에 대해 마치겠습니다.
좋은 하루 되세요 :)
[ 오라클 NVL 함수를 이제서야 안 자신을 자책하는 개발자.. ]
'[개발] Programming > Database' 카테고리의 다른 글
오라클 한글 바이트 수 조회 (length, lengthb 차이점) (0) | 2024.02.15 |
---|---|
오라클 날짜 계산 방법과 예제 정리 (1) | 2023.11.10 |
오라클 INSERT 문 사용 방법과 예시 (DB 데이터 저장) (0) | 2022.12.20 |
DELETE 쿼리 (오라클, MSSQL) 사용 방법, 주의 사항 (0) | 2022.11.08 |
MS SQLServerException: 문자열이나 이진 데이터는 잘립니다 - 해결 방법 (0) | 2022.08.10 |
댓글