프로그래머스_SQL_오답노트_LIKE와 IN의 차이 및 NULL 함수 정리_오라클/MYSQL

HEE·2025년 3월 10일
0

프로그래머스 SQL

목록 보기
1/13
post-thumbnail

프로그래머스 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 그대로 써줌.

어려웠던 부분

  • 경기도에 위치한~ LIKE IN 의 용법 차이

나는 LIKE와 IN의 용법 차이를 정확하게 알고 있지 않았기 때문에 헷갈렸다.

LIKE

  • 부분 문자열 검색 가능
    EX. '경기도%'

IN

  • 정확히 일치하는 값들을 리스트에서 찾을때 사용
    EX. 경기도 - 정확히 경기도만 포함된 주소를 찾게됨
    (경기도 안산시 - 검색 불가)

NULL 관련 함수 정리 [오라클] (유선배 파랭이 p99)

추가로 NULL 관련 함수 정리하고 간다.

  1. NVL(인수1,인수2)
    인수1 = NOT NULL -> 인수1
    인수1 = NULL -> 인수2

  2. NVL2(인수1, 인수2, 인수3) - ONLY 오라클 / MY SQL 지원X
    인수1 = NOT NULL -> 인수2
    인수1 = NULL -> 인수3
    EX. NVL2(REVIEW, '리뷰있음', '리뷰없음')

  3. NULLIF(인수1, 인수2)'
    인수1 = 인수2 -> NULL
    인수1 =/= 인수2 -> 인수1

  4. COALESCE(인수1, 인수2, 인수3, ....)
    NULL이 아닌 최초의 인수를 반환
    CASE1.
    인수1 = NOT NULL -> 인수1
    CASE2.
    인수1 = NULL ->
    인수2 =/= NULL -> 인수2
    CASE3.
    인수1 = NULL, 인수2 = NULL, -> 인수3.....

profile
ALL IS WELL

0개의 댓글