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
'코딩테스트 > SQL' 카테고리의 다른 글
[프로그래머스][MySQL] Lv. 1 조건에 맞는 도서 리스트 출력하기 (1) | 2024.03.16 |
---|---|
[프로그래머스][MySQL] Lv. 1 Python 개발자 찾기 (0) | 2024.03.15 |
[프로그래머스][MySQL] Lv. 1 평균 일일 대여 요금 구하기 (0) | 2024.03.03 |
[프로그래머스][MySQL] Lv. 1 모든 레코드 조회하기 (0) | 2024.03.03 |
[프로그래머스][MySQL] Lv. 1 흉부외과 또는 일반외과 의사 목록 출력하기 (0) | 2023.12.13 |