목차
INTRO
MySQL에서는 다음의 4가지 함수들을 흐름 제어 함수(Flow Control Functions)이라고 한다!
CASE | Case operator |
IF() | If/else construct |
IFNULL() | Null if/else construct |
NULLIF() | Return NULL if expr1 = expr2 |
1. CASE
여러 가지 조건이 있을 때, 사용하는 함수이다.
* 마지막의 END를 꼭 써줘야한다.
CASE
WHEN 조건 THEN 결과값
WHEN 조건 THEN 결과값
ELSE 결과값
END
실제 활용
select 문에서 CASE WHEN 절을 하나의 새로운 컬럼으로 정의해준다.
-> (CASE WHEN 절) AS 새로운컬럼명 으로 정의해준다.
SELECT ID,
(CASE
WHEN SIZE_OF_COLONY <=100 THEN 'LOW'
WHEN SIZE_OF_COLONY <=1000 THEN 'MEDIUM'
ELSE 'HIGH'
END) AS SIZE
FROM ECOLI_DATA
ORDER BY ID
2. IF
단일 조건을 적용해야할 때 사용
IF(조건식, 조건이 참일 때 결과값, 조건이 거짓일 때 결과값)
예시)
SELECT IF(1<2,'yes','no'); # 'yes'
3. IFNULL()
IFNULL(expr1, expr2) # expr1이 NULL이면 expr2를 리턴
- expr1이 NULL이면 exp2를 리턴,
- expr1이 NULL 이 아니면 expr1 자신을 반환
SELECT IFNULL(4, 'not_null') # not_null 리턴
SELECT IFNULL(NULL, 'not_null') #NULL 리턴
결측값(NULL) 처리에 활용한다.
어떤 셀의 값이 NULL일 때, 다른 값으로 대체해야한다. 이떄 IFNULL()을 쓴다.
+-------+--------------+------+----|
| name | Type | age | Key |
+-------+--------------+------+----|
| test | varbinary(4) | NULL | |
+-------+--------------+------+----|
| test | varbinary(4) | 24 | |
+-------+--------------+------+----+
위처럼 age가 NULL인 데이터가 있을 수 있다. 이때 데이터를 활용하려면 NULL 값을 평균 연령으로 대체해야한다.
> SELECT IFNULL('age', AVG(age)) 를 쓰면 가능
cf) '변수명 IS NULL' 과의 차이
IFNULL()은 NULL인 데이터를 찾아서, 다른 값으로 대체할 수있다는 장점이 있다!
4. NULLIF
- 두 값이 같은지를 비교해주는 함수 cf) ISNULL(): 1개의 변수가 Null인지 판단하는 함수
NULLIF(expr1,expr2)
- expr1과 expr2가 같으면 NULL을, 다르면 expr1을 리턴해주는 함수이다.
SELECT NULLIF(1,1); # NULL
SELECT NULLIF(1,0); #IF
실제 어떻게 사용되나요?
- 컬럼에서 특정 값을 NULL로 바꾸고 싶을 떄
SELECT NULLIF(NAME, '홍길동'); # '홍길동' 이름은 NULL로 처리한다.
+ COALESCE() 를 통해서 여러 대상들에서, 처음으로 NULL이 아닌 최초의 값을 출력할 수 있다.
SELECT COALESCE(대상1, 대상2, ..., 대상N, 그외리턴값)
- 대상1, ... 대상N에서 처음으로 NULL값인 대상을 리턴한다.
- 모든 대상이 NULL이면, 그외의 리턴값이 반환된다.
다음 쿼리는 사용자 정보를 저장하는 쿼리문이다.
SELECT COALESCE(first_name, second_name, email)
FROM TABLE1;
1) first_name이 null이 아니고, second_name이 null -> first_name 반환
2) first_name이 null이고, second_name이 null (X) -> second_name 반환
3) 둘다 Null 일 경우 email 반환
+) 2024.11.13
MySQL에서는
NVL() 함수와 NVL2() 함수가 없다!
COALESCE 문 예시 출처:
https://dbaant.tistory.com/33#google_vignette
[MYSQL] Coalesce 함수 Null이 아닌 값 반환 사용 방법
MySQL에서 COALESCE 함수는 입력된 값 중 첫 번째로 NULL이 아닌 값을 반환하는 함수입니다. COALESCE 함수는 두 개 이상의 인수를 받을 수 있습니다. 일반적인 사용법은 다음과 같습니다. COALESCE(expr1, exp
dbaant.tistory.com
'SQL > MySQL' 카테고리의 다른 글
[MySQL] 날짜 형식 맞추기 DATE_FORMAT() (0) | 2024.10.31 |
---|