meong_j
기록하는 습관.
meong_j
전체 방문자
오늘
어제
  • 분류 전체보기 (176)
    • 개인 공부 정리 (0)
    • 서버 운영 (37)
      • Linux (36)
    • Frontend (11)
      • Vue.js (10)
    • Backend (70)
      • Java (4)
      • Python (22)
      • Django (38)
      • Spring (6)
    • Database (5)
      • Oracle (4)
      • MySQL (1)
      • MariaDB (0)
    • Android (14)
      • Kotlin (6)
    • 배포 (9)
      • Docker (8)
      • AWS (1)
    • IT_study (29)
      • Coding test (17)
      • 알고리즘 (5)
      • 스터디 (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • github

인기 글

반응형

태그

  • Proxy
  • docker
  • 이차원배열정렬
  • 코틀린자료형
  • router-link
  • gabagecollecter
  • dp #알고리즘
  • Kotlin
  • 리눅스인증
  • SASS Variables
  • 개발자도서
  • 중첩라우트
  • 배포인프라
  • 테크커리어
  • DHCP
  • cpu사용률
  • dockersecret
  • 안드로이드adaptor
  • 리눅스방화벽
  • django

최근 댓글

최근 글

250x250
hELLO · Designed By 정상우.
meong_j

기록하는 습관.

Database/Oracle

[SQL] NULL(널) 처리 함수 (NVL / ISNULL)

2022. 1. 6. 13:58
728x90
반응형

리눅스에서 스크립트를 작성하고 있는데 테이블에 있는 값을 조회해서 다른 테이블에 넣는 작업을 하고 있었다. 오라클 DB로 SELECT한 결과 값을 따로 파일에 저장하고 그 파일을 가져오는 데 있어서 null 인 값들은 리눅스에서 공백('')으로 저장이 되어진다. 그래서 파일에 있는 값들을 읽어서 파라미터로 INSERT를 하려면 공백인 값들은 인식이 안되는 문제가 생기게 된다. 

어떻게 할까..? 고민하다가 null인 값들은 문자열 'null'로 저장하자는 결론을 내렸다. 

 

 

이러한 null을 처리해서 다른 문자열로 대체하는 SQL 함수를 소개하려고 한다.

일단 NULL 이라는 아이를 먼저 알아보자!

 

 

 

NULL 이란?

 

- NULL 값은 아직 정의되지 않은 값으로 0 또는 공백과 다르다. 0은 숫자고, 공백은 하나의 문자이다

- 테이블을 생성할 때 NOT NULL 또는 RPIMARY KEY로 정의되지 않은 모든 데이터 유형은 NULL 값을 포함할 수 있다.

- NULL 값을 포함하는 연산의 경우 결과 값도 NULL 값이다. 모르는 데이터에 숫자를 더하거나 빼도 결과는 마찬가지로 모르는 데이터 인 것과 같다.

    > NULL + 1 = NULL

    > NULL - 2 = NULL

    > NULL * 2 = NULL

    > NULL / 2 = NULL

 

 

NULL(표현식1, 표현식2)  / ISNULL(표현식1, 표현식2)

 

표현식1의 결과가 NULL인 경우 표현식2의 값으로 출력한다.

단, 표현식1과 표현식2의 결과 데이터 타입이 같아야 한다. NULL 관련해서 가장 많이 쓰는 함수라 상당히 중요하다.

 

일단, 오라클에서는 NVL 함수를 사용한다.

 

NVL(NULL 판단 대상, '컬럼이 NULL일 경우 대체값')
SELECT NVL(NULL, 'NVL-OK') AS NVL_TEST
FROM DUAL;

 

SELECT NVL('Not-Null', 'NVL-OK') NVL_TEST
FROM DUAL;

문자열 'Not-Null'은 null이 아니니 'Not-Null'을 출력한다.

 

SELECT NVL(URL,'null') from TEST;

TEST 테이블의 URL컬럼값이 NULL인 경우 문자열 'null'로 대체하여 출력

 

 

ISNULL(NULL 판단 대상, 'NULL일 때 대체값')

SQL Server의 경우 ISNULL 함수를 사용한다. 결과는 NULL함수랑 동일하다.

 

 

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'Database > Oracle' 카테고리의 다른 글

[Oracle] SQL Developer 날짜 format 변경  (0) 2021.11.22
오라클 TO_DATE - String 타입을 Date타입으로 변환  (0) 2021.11.19
Oracle SQL 테이블 컬럼명, 테이블명 출력  (0) 2021.10.21
    'Database/Oracle' 카테고리의 다른 글
    • [Oracle] SQL Developer 날짜 format 변경
    • 오라클 TO_DATE - String 타입을 Date타입으로 변환
    • Oracle SQL 테이블 컬럼명, 테이블명 출력
    meong_j
    meong_j
    #it #개발일기 #개발공부 #개발자 #백앤드 #생각정리 #시간은 실력에 비례한다 #뭐든지 꾸준히 열심히 #오늘의 내가 내일의 나를 만든다

    티스토리툴바