반응형
IFNULL()
MySQL에서 해당 Column의 값이 NULL을 반환할 경우 다른 값으로 출력하고 싶다면 INFULL함수를 사용하면 된다.
- IF() 함수와 마찬가지로 익숙하다.
- 오라클의 NVL()정도로 생각해도 문제가 없을 것 같다.
- expr1이 NULL이면 expr2, 그렇지 않으면 expr1 을 return
SELECT IFNULL(expr1, expr2) FROM 테이블명;
SELECT IFNULL(Column명, "Null일 경우 대체 값") FROM 테이블명;
https://dev.mysql.com/doc/refman/8.0/en/flow-control-functions.html#function_ifnull
SELECT address , address2 FROM address a LIMIT 10;
예시
-- 값이 Null 인 경우 0으로 치환한다.
-- 값이 Null 인 경우 <주소없음>으로 치환한다.
SELECT address , IFNULL(address2,0),IFNULL(address2,'주소없음') FROM address a LIMIT 10;
비슷한 사용법
- Case When을 사용해서 반환값 지정
-- adress2가 Null이라면 0으로 치환
-- adress2가 빈스트링이라면 주소없음으로 치환
-- 둘다 아닐 경우 기존 adress2로 반환
SELECT address ,
CASE WHEN address2 = NULL THEN 0
WHEN address2 = '' THEN '주소없음'
ELSE address2
END AS address2
FROM address a LIMIT 10;
NULLIF()
MySQL에서 해당 Column의 값을 비교해서 두 값이 같다면 True 아니라면 expr1을 반환하고 만약 True라면 Null을 리턴한다.
- Case When과 흡사하다.
- if expr1 = expr2 is true, otherwise returns expr1. This is the same as CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END.
SELECT NULLIF(expr1, expr2) FROM 테이블명;
https://dev.mysql.com/doc/refman/8.0/en/flow-control-functions.html#function_nullif
-- 1과 1은 True이므로 Null을 리턴한다.
SELECT NULLIF(1,1);
-> NULL
-- 1과 2는 False이므로 expr1인 1을 리턴한다.
SELECT NULLIF(1,2);
-> 1
반응형
'DB > MySQL' 카테고리의 다른 글
[MySQL] FIRST_VALUE() (0) | 2023.01.18 |
---|---|
[MySQL] SUM() OVER()함수 (0) | 2023.01.17 |
[MySQL] LAG() 함수 (0) | 2023.01.17 |
[MySQL] LEAD() 함수 (0) | 2023.01.17 |
[MySQL] ROW_NUMBER() 함수 (0) | 2023.01.17 |