코딩테스트/SQL

[프로그래머스][MySQL] Lv. 1 경기도에 위치한 식품창고 목록 출력하기

_알파카 2023. 12. 11. 18:19
728x90

프로그래머스 > MySQL > 코딩테스트 연습 > IS NULL > 경기도에 위치한 식품창고 목록 출력하기

 

 

내 코드 및 정답

SELECT WAREHOUSE_ID
        , WAREHOUSE_NAME
        , ADDRESS
        , IFNULL(FREEZER_YN, 'N') as FREEZER_YN 
FROM FOOD_WAREHOUSE
WHERE ADDRESS LIKE '%경기도%'
ORDER BY WAREHOUSE_ID;

 

까먹었던 개념

1. IFNULL

MySQL에서 커럼 값이 NULL인 경우 처리해주는 함수들은 IFNULL, CASE, COALESCE가 있다. 

1) 기본구조
SELECT IFNULL(Column명, "Null일 경우 대체 값") FROM 테이블명; 

2) 혹은 if함수와 is null 조건으로 사용
// NAME Column이 NULL일 경우 "No name"을, NULL이 아닌 경우는 NAME Column을 출력
SELECT IF(IS NULL(NAME), "No name", NAME) as NAME FROM 테이블명;

3) Case
: 해당 Column 값을 조건식을 통해 True, False를 판단하여 
조건에 맞게 Column값을 변환할 때 사용하는 함수이다.

CASE 
    WHEN 조건식1 THEN 식1
    WHEN 조건식2 THEN 식2
    ...
    ELSE 조건에 맞는경우가 없는 경우 실행할 식
END

ex--
// NAME Column의 IS NULL 조건이 True인 경우 "No name" 출력
// WHEN 조건들에 True인 조건이 없을 경우 ELSE 문을 통해 NAME Column의 값 출력
// END 이후 그 Column의 별칭을 NAME으로 지정
SELECT 
    CASE
        WHEN NAME IS NULL THEN "No name"
        ELSE NAME
    END as NAME
FROM ANIMAL_INS

 

 

2. LIKE

LIKE 연산자는 특정 문자가 포함되어 있는 데이터를 검색할 때 사용한다. 

1) 특정 문자로 시작하는 데이터 검색
SELECT [필드명] FROM [테이블명] WHERE [필드명] LIKE '특정 문자열%';


2) 특정 문자로 끝나는 데이터 검색
SELECT [필드명] FROM [테이블명] WHERE [필드명] LIKE '%특정 문자열';


3) 특정 문자를 포함하는  데이터  검색
SELECT [필드명] FROM [테이블명] WHERE [필드명] LIKE '%특정 문자열%';


이때, 복수개의 특정 문자를 포함하는 데이터를 검색하기 위해서 OR연산자를 사용해야한다.
SELECT [필드명] FROM [테이블명] WHERE [필드명] LIKE '%특정 문자열%' OR [필드명] LIKE '%특정 문자열2%';

 

REGEXP

이를 해결하고자, REGEXP 연산자를 사용하도록 한다.

REGEXP 연산자는 LIKE보다 복잡한 패턴을 검색 할때 사용한다.

 

복수개의 특정 문자를 포함하는 데이터 검색 (특정 문자열을 '|' 를 기준으로 나눈다)

SELECT [필드명] FROM [테이블명] WHERE [필드명] REGEXP '특정 문자열|특정 문자열2';

728x90