데이터 중 NULL 값이 있을 수 있습니다. 이런 NULL 값을 체크하여 다른 문자로 대체를 하여 표현할 수도 있고, 그것을 비교할 수도 있는 NVL에 대해 알아보겠습니다.
NVL(값, NULL일 경우 대체하고 싶은 값)
: NVL에 NULL을 체크하고 싶은 칼럼이나 값을 적고, 그게 NULL일 경우 대체할 값을 적어주면 됨.
TMP_ANIMAL이라는 테이블이 아래와 같이 데이터가 존재합니다. 이 데이터에 NVL을 사용하는 예시 2개를 정리해보았습니다.
예시1) 테이블 TMP_ANIMAL에서 칼럼 YN(사용유무)가 유이면 'Y'이고, 무면 'N' 또는 NULL인데 조회시 NULL인 값도 'N'으로 조회될 수 있도록 하시오.
SELECT NAME, NVL(YN, 'N') AS YN
FROM TMP_ANIMAL
위의 쿼리를 사용하게 되면 아래와 같이 'Y'였던 dog와 rabbit을 제외한 나머지가 'N'으로 조회된 것을 확인할 수 있습니다.
예시2) 테이블 TMP_ANIMAL에서 칼럼 YN(사용유무)가 유이면 'Y'이고, 무면 'N' 또는 NULL인데 사용유무가 무인 동물의 이름을 조회되도록 하시오.
SELECT NAME
FROM TMP_ANIMAL
WHERE NVL(YN, 'N') = 'N'
위의 쿼리를 사용하게 되면 아래와 같은 결과를 얻게 됩니다. 'Y'였던 dog와 rabbit을 제외한 데이터에 있는 모든 동물의 이름이 조회되는 걸 확인할 수 있습니다. 그리고 조회조건에서도 NVL을 사용할 수 있다는걸 알 수 있습니다.
NVL2(값, NULL이 아닌 경우 대체하고 싶은 값, NULL일 경우 대체하고 싶은 값)
: NVL2에 NULL을 체크하고 싶은 칼럼이나 값을 적고, 그 칼럼이 NULL이 아닐때 출력하고 싶은 값과 NULL일때 출력하고 싶은 값을 적어주면 됨.
예시3) GUEST들은 가입 당시 휴대폰 소유를 하고 있을 경우 휴대폰 번호를 입력해야했습니다. 아래 테이블 TMP_GUEST_LIST를 조회하되 GUEST가 휴대폰 소유 유무를 칼럼 PHONE_YN으로 추가적으로 조회될 수 있도록 하시오. (단, PHONE_YN는 소유할 경우 'Y', 소요하고 있지 않을 경우 'N')
SELECT NAME, AGE, PHONE_NUMBER, NVL2(PHONE_NUMBER, 'Y', 'N') AS PHONE_YN
FROM TMP_GUEST_LIST
위 쿼리를 사용하게 되면 아래와 같은 결과를 얻게 됩니다. PHONE_NUMBER 칼럼에 NVL2를 활용하여 칼럼에 연락처가 입력되어 있을 경우 'Y', NULL 값일 경우 'N'이 출력될 수 있도록 했습니다.
본 글에서 Oracle의 NVL과 NVL2에 대해 알아보았습니다. MSSQL에서 NVL같은 역할을 하는 ISNULL에 대해서 알고싶다면 아래 링크를 클릭하시면 됩니다.
[MSSQL] Null 체크 및 대체 (ISNULL)
데이터 중 NULL값이 있을 수 있습니다. 이런 NULL값을 체크하여 다른문자로 대체를 하여 표현할 수도 있고, 그것으로 비교할 수도 있는 ISNULL에 대해 알아보겠습니다. ISNULL(값, NULL일 경우 대체하
pink-rabbit.tistory.com
'개발 > SQL' 카테고리의 다른 글
[MSSQL] Null 체크 및 대체 (ISNULL) (0) | 2021.08.30 |
---|---|
[MSSQL] 문자열 치환 (REPLACE, STUFF) (0) | 2021.08.28 |
[MSSQL] 문자열 자르기 (LEFT, RIGHT, SUBSTRING) (0) | 2021.08.24 |
댓글