
프로그래머스 SQL 고득점 KIT 내 IS NULL 문제
Level 1. 경기도에 위치한 식품창고 목록 출력하기.
FOOD_WAREHOUSE 테이블에서 경기도에 위치한 창고의 ID, 이름, 주소, 냉동시설 여부를 조회하는 SQL문을 작성해주세요. 이때 냉동시설 여부가 NULL인 경우, 'N'으로 출력시켜 주시고 결과는 창고 ID를 기준으로 오름차순 정렬해주세요.
문제 끊어 읽기
FROM FOOD_WAREHOUSE 테이블에서 /
WHERE (LIKE, IN) 경기도에 위치한 /
SELECT 창고의 ID, 이름, 주소, 냉동시설 여부를 조회하는 SQL문/
NVL 이때 냉동시설 여부가 NULL인 경우, 'N'으로 출력시켜 주시고 /
ORDER BY 결과는 창고 ID를 기준으로 오름차순 정렬해주세요./
정답 확인 [오라클]
SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS,
NVL(FREEZER_YN,'N') AS FREEZER_YN
FROM FOOD_WAREHOUSE
WHERE ADDRESS LIKE '경기도%'
ORDER BY WAREHOUSE_ID ASC;
정답 확인 [MY SQL]
SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS,
IFNULL(FREEZER_YN, 'N') AS FREEZER_YN
FROM FOOD_WAREHOUSE
WHERE ADDRESS LIKE '경기도%'
ORDER BY WAREHOUSE_ID ASC;
NVL은 오라클에서만 사용하는 함수!
MY SQL에서는 NVL 대신 IFNULL 을 사용!
NVL 자리에 IFNULL 그대로 써줌.
어려웠던 부분
- 경기도에 위치한~
LIKEIN의 용법 차이
나는 LIKE와 IN의 용법 차이를 정확하게 알고 있지 않았기 때문에 헷갈렸다.
LIKE
IN
NULL 관련 함수 정리 [오라클] (유선배 파랭이 p99)
추가로 NULL 관련 함수 정리하고 간다.
NVL(인수1,인수2)
인수1 = NOT NULL -> 인수1
인수1 = NULL -> 인수2
NVL2(인수1, 인수2, 인수3) - ONLY 오라클 / MY SQL 지원X
인수1 = NOT NULL -> 인수2
인수1 = NULL -> 인수3
EX. NVL2(REVIEW, '리뷰있음', '리뷰없음')
NULLIF(인수1, 인수2)'
인수1 = 인수2 -> NULL
인수1 =/= 인수2 -> 인수1
COALESCE(인수1, 인수2, 인수3, ....)
NULL이 아닌 최초의 인수를 반환
CASE1.
인수1 = NOT NULL -> 인수1
CASE2.
인수1 = NULL ->
인수2 =/= NULL -> 인수2
CASE3.
인수1 = NULL, 인수2 = NULL, -> 인수3.....