일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- POST
- requests
- venv
- portfolio
- Crawling
- get
- fetch
- flaskframework
- pymongo
- github
- frontend
- body
- json
- java
- flask
- javascript
- atlas
- synology
- CSS
- OOP
- mysql
- backend
- Algorithm
- PYTHON
- Project
- NAS
- beautifulsoup
- CRUD
- openapi
- mongodb
Archives
- Today
- Total
wisePocket
[MySQL] 조건문 정리 if, ifnull, case when, nvl 사용 본문
MySQL 조건문
프로그래머스 문제 풀이 중 조건문을 사용해야 해서 정리하고자 한다.
1. IF
IF(조건문, 참일 때의 값, 거짓일 때의 값)
기본 사용 방식은 엑셀의 =IF() 와 같다.
SELECT IF(2 > 1, 'TRUE', 'FALSE') AS result
아래와 같이 특정 컬럼 값의 조건에 의해서, 다른 컬럼의 출력하는 분기 처리도 가능하다.
엑셀 처럼 중첩 IF 의 사용도 가능하다.
SELECT IF(column_name is null, column_1, columnj_2) AS result
문제 안에서 "이때 냉동시설 여부가 NULL인 경우, 'N'으로 출력시켜 주시고" 이 부분을 이렇게 표현 할 수 있다.
-- 코드를 입력하세요 select * from food_warehouse; select warehouse_id, warehouse_name, address, (if(freezer_yn is null, 'N', 'Y')) freezer_yn from food_warehouse where address like "경기도%" order by warehouse_id asc;
2. ifnull
IFNULL() 함수는 해당 필드의 값이 NULL 을 반환할 때, 지정한 값으로 대체하여 출력해준다.
위 문제에 적용하기 가장 적합한 함수이다.
문제 안에서 "이때 냉동시설 여부가 NULL인 경우, 'N'으로 출력시켜 주시고" 이 부분을 이렇게 표현 할 수 있다.
-- 코드를 입력하세요 select * from food_warehouse; select warehouse_id, warehouse_name, address, (ifnull(freezer_yn, 'N')) freezer_yn from food_warehouse where address like "경기도%" order by warehouse_id asc;
null 인 부분의 문제만 해결하기 때문에 해당 문제와는 가장 근접하지만 null 이 아닌 부분은 무시하게 된다.
3. CASE WHEN
CASE value 혹은 조건 WHEN value1 THEN result1 WHEN value2 THEN result2 … [ELSE else_result] END
WHEN 과 THEN 은 쌍을 이루어 사용, Java 나 JavaScript 의 switch case 와 흡사하다.
문제 안에서 "이때 냉동시설 여부가 NULL인 경우, 'N'으로 출력시켜 주시고" 이 부분을 이렇게 표현 할 수 있다.
-- 코드를 입력하세요 select * from food_warehouse; select warehouse_id, warehouse_name, address, (CASE WHEN freezer_yn is null THEN 'N' ELSE freezer_yn END ) as freezer_yn from food_warehouse where address like "경기도%" order by warehouse_id asc;
freezer_yz이 NULL인 경우에 'N'을 입력,
Else 그외 경우는 그대로 들어가도록 입력. 무언가 조건이 여러개 달려야 하는 경우 사용하면 시인성이 좋을 것 같다.
4. NVL
NVL(value1, value2)
컬럼 값이 NULL 이면 value2 을 출력하고, NULL이 아니라면 value1 컬럼 값을 출력한다.
ORACLE에서 NULL 처리를 위해 사용하는 NVL, NVL2의 함수이다.
MySQL에서는 2. IFNULL을 사용하면 된다.
Oracle의 예시는 다음과 같다.
select warehouse_id, warehouse_name, address, NVL(freezer_yn, 'N') as freezer_yn from food_warehouse where address like '경기도%' order by warehouse_id;
'Database > MySQL - RDBMS' 카테고리의 다른 글
[MySQL] 조건이 다수 등장 할 때, 논리 조건이 필요 할 때 사용 (0) | 2023.08.07 |
---|---|
[MySQL] DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') (0) | 2023.08.07 |
[MySQL] Subquery 서브쿼리 (0) | 2023.08.05 |
[MySQL] select의 join절(Equal Join, Non-Equal Join)과 Union까지 (0) | 2023.08.04 |
[MySQL] select문에서 group by, order by 활용 (0) | 2023.08.04 |