728x90
반응형
<select id="**" parameterMap="**" resultClass="DTO">
SELECT NVL(a.b, '02') AS b /* 상태(01: open, 02: close, 03: 휴점, 04: 폐점) */
FROM a
WHERE 조건
ORDER BY a.b
</select>
해당 SQL문에서 'NVL'이 의미하는 바는 무엇인가?
1. NVL 함수란?
Oracle SQL에서 자주 사용되는 함수로,
특정 컬럼이나 표현식의 값이 NULL일 경우 대체 값을 반환하는 기능을 한다.
NVL 함수의 기본 형식은 다음과 같다.
NVL(A, B)
* A : 검사할 값이나 컬럼
* B : A가 NULL일 때 반환할 대체 값
2. 'SELECT NVL(a.b, '02') AS b' 값 의미
SELECT NVL(a.b, '02') AS b /* 상태(01: open, 02: close, 03: 휴점, 04: 폐점) */
따라서 위 코드의 의미는
- a 테이블의 b 컬럼 값이 NULL이 아닐 때, b 값 그대로 반환
- a 테이블의 b 컬럼 값이 NULL일 때 '02' 반환
예를 들어 a테이블의 b 컬럼에 다음과 같은 값들이 있다고 가정해보자.
<a 테이블>
b |
'01' |
NULL |
'03' |
NULL |
이 경우, NVL(a.b, '02')를 사용하면 다음과 같은 결과를 얻을 수 있다.
<a 테이블 : NVL 함수 적용 결과>
b |
'01' |
'02' |
'03' |
'02' |
즉, NULL 값을 '02'로 대체하여 반환된다.
3. 요약
NVL 함수는 DB 쿼리에서 NULL 값을 특정 값으로 대체하여 처리할 때 유용하다.
728x90
반응형
'[Language] > SQL' 카테고리의 다른 글
SQL Error [933] [42000]: ORA-00933: SQL command not properly ended (0) | 2024.07.01 |
---|---|
[Oracle] 결과값 표시 제한 (LIMIT, ROWNUM) (0) | 2024.07.01 |
[Oracle]SQL Error [1401] [22001]: ORA-01401 (0) | 2024.06.21 |
[Oracle] TableSpace 생성 (0) | 2024.06.21 |
[Oracle/DBeaver]ORA-28000: the account is locked (1) | 2024.06.21 |