Day to_day

Null 치환하기 본문

SQL

Null 치환하기

m_inglet 2022. 9. 27. 23:21
728x90
반응형

프로그래머스에서 'null처리하기' 문제를 풀다가 null 값을 처리하는 함수가 많아서 정리해보려고한다.

 

내가 풀었던 문제는 null값을 null로 표시하는 대신 'No name'으로 치환하는 것이다.

SELECT ANIMAL_TYPE, IFNULL(NAME, 'No name') AS NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS;

 

IFNULL을 이용해서 풀긴 풀었지만 MySQL에서는 IFNULL을 사용하지만 오라클 환경에선 또 다른 함수를 쓴다.


Null 치환하기

MySQL과 오라클(Oracle)에서 null값을 치환하는 함수가 각각 다르다.

어떤 데이터가 null값을 가질 때 치환하여 다른 값으로 표현하고싶을 때 사용한다.

 

MySQL

IFNULL(적용할 Column명, 대체할 값)

→ 해당 column에 null값이 있다면 정해놓은 값으로 대체해라.

 

<기본 예시>

SELECT IFNULL(price, 0)
FROM market;

→ 가격(price)가 null값을 가지면 null이라고 표현하지말고 숫자 0을 넣어라

 

 

오라클(Oracle)

NVL(적용할 Column명, 대체할 값)

→ 오라클에서도 MySQL과 같은 식으로 적용된다.

 

<기본 예시>

SELECT NVL(price, 0)
FROM market;

 

 

※ NVL2도 있다!

NVL2(적용할 Column명, 대체할 값1, 대체할 값2)

→ 해당 column이 존재하면 값1로 대체하고, 존재하지 않는다면(null) 값2로 대체해라

 

<기본 예제>

SELECT NVL(price, price, 0)
FROM market;

위의 예시는 첫번째 예시와 결과는 같겠지만 price가 있으면 price에 해당하는 값을 반환하고, 없으면 0으로 치환하라는 의미이다.

 

SELECT NVL2(comm, 'Y', 'N') as NVL
FROM emp;

위의 예시는 comm 컬럼이 존재하면 무조건 ‘Y’라는 값으로 치환하고, 널 값이면 ‘N’으로 치환하는 것이다.

 

+NULLIF도 있던데?

오라클 환경에서 NULLIF도 쓰인다!

하지만 다른 의미로 쓰임!

 

NULLIF(적용할 칼럼, 비교 값)

→ 해당 칼럼에 대해서 비교 값이랑 같다면 Null을 반환, 다르면 칼럼값을 반환한다.

 

<기본 예제>

SELECT NULLIF(item_list, 'Orange')
FROM market;

→ item_list에서 ‘Orange’라는 도메인(값)이 들어가있으면 null값으로 치환하고, 그렇지 않은 다른 값들은 item_list에 들어있는 그대로 반환한다.

728x90
반응형