일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 백엔드
- 지도학습
- NULLIF
- NVL
- 오차 행렬
- 빠르게 실패하기
- 데이터 전처리
- SQL
- CASE WHEN
- five lines challenge
- layer normalization
- nvl2
- 결정트리
- Normalization
- 평가 지표
- DecisionTree
- 웹서비스 기획
- 데이터 프로젝트
- ifnull
- 재현율
- beautifulsoup
- 비지도학습
- Batch Normalization
- LAG
- 강화학습
- sorted
- 데이터 분석
- 감정은 습관이다
- 정밀도
- recall
- Today
- Total
Day to_day
Null 치환하기 본문
프로그래머스에서 '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에 들어있는 그대로 반환한다.
'SQL' 카테고리의 다른 글
[MySQL] NOT IN을 사용할 때 주의할 점 (+ EXISTS와 비교하기) (0) | 2023.01.04 |
---|---|
[MySQL] 날짜 연산 DATE_ADD, DATE_SUB, DATEDIFF (+ LEAD, LAG) (0) | 2023.01.03 |
WITH 절 사용하기 (feat. PARTITION BY) (0) | 2022.11.04 |
재귀 쿼리 WITH RECURSIVE (0) | 2022.11.04 |
CASE WHEN 사용하기 (0) | 2022.11.02 |