
다음은 식품창고의 정보를 담은 FOOD_WAREHOUSE 테이블입니다. FOOD_WAREHOUSE 테이블은 다음과 같으며 WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, TLNO, FREEZER_YN는 창고 ID, 창고 이름, 창고 주소, 전화번호, 냉동시설 여부를 의미합니다.
| Column name | Type | Nullable |
|---|---|---|
| WAREHOUSE_ID | VARCHAR(10) | FALSE |
| WAREHOUSE_NAME | VARCHAR(20) | FALSE |
| ADDRESS | VARCHAR(100) | TRUE |
| TLNO | VARCHAR(20) | TRUE |
| FREEZER_YN | VARCHAR(1) | TRUE |
FOOD_WAREHOUSE 테이블에서 경기도에 위치한 창고의 ID, 이름, 주소, 냉동시설 여부를 조회하는 SQL문을 작성해주세요. 이때 냉동시설 여부가 NULL인 경우, 'N'으로 출력시켜 주시고 결과는 창고 ID를 기준으로 오름차순 정렬해주세요.
우선 이 문제를 해결하기 위해 LIKE 절과 IFNULL() 함수를 이용해야 한다.
먼저, IFNULL() 함수를 이용하여 FREEZER_YN 출력시 해당 열에 존재하는 NULL 값을 N으로 대체해준다.
이후, LIKE 절을 이용하여 경기도에 위치한 식품창고만 골라내야 하는데,
이때 WAREHOUSE_NAME열과 ADDRESS열을 사용할 수 있다.
먼저 WAREHOUSE_NAME 열은 (창고_경기1, 창고_충북1, ...) 과 같이 저장되어 있으므로 LIKE 절 조건을 %%%경기% 로 지정하여 앞선 세글자 뒤에 '경기'라는 문자가 시작하는지 확인하고,
ADDRESS 열의 경우엔 (경기도 안산시 ..., 충청북도 진천군 ..., ...) 과 같이 저장되어 있으므로 LIKE 절 조건을 경기%로 지정하여 맨 앞 두글자가 '경기'라는 문자로 시작하는지 확인하면 된다.
# 조건 WAREHOUSE_NAME
SELECT WAREHOUSE_ID
,WAREHOUSE_NAME
,ADDRESS
,IFNULL(FREEZER_YN, 'N')
FROM FOOD_WAREHOUSE
WHERE WAREHOUSE_NAME LIKE ('%%%경기%')
ORDER
BY WAREHOUSE_ID ASC;
# 조건 ADDRESS
SELECT WAREHOUSE_ID
,WAREHOUSE_NAME
,ADDRESS
,IFNULL(FREEZER_YN, 'N')
FROM FOOD_WAREHOUSE
WHERE ADDRESS LIKE ('경기%')
ORDER
BY WAREHOUSE_ID ASC;
IFNULL 함수를 이용해 NULL 값을 대체하고, LIKE 절을 이용하여 해당 지역이름을 포함하는 행을 조회하는 간단한 문제였다.
https://school.programmers.co.kr/learn/courses/30/lessons/131114