~고군분투 인생살이~

[MySQL] IFNULL과 COALSECE의 차이 본문

SQL/개념

[MySQL] IFNULL과 COALSECE의 차이

소금깨 2022. 7. 6. 16:08

MySQL에서 Null값을 처리하기 위해 사용되는 함수는 IFNULL, COALESCE 함수가 있다.

(조건문인 CASE와 IF 함수는 여기서 논하지 않습니다)

 

이 둘의 차이점은 무엇일까 ? 

=>  check할 수 있는 argument 갯수에 차이가 있다 (사용 방법에 차이가 있음)

=> COALSECE는 SQL 표준 함수이고, IFNULL은 MySQL에서만 사용이 가능하다 

 

IFNULL(val, x) -- single argument

-> val 값이 null이면 x를 반환하고, null이 아니면 val을 그대로 반환한다 

 

COALSECE (val1, val2, val3...) -- multiple(N) argument

-> val1 값이 null이면 val2를 반환, val2도 null이면 val3를 반환한다. 

    val1 값이 null이면 val2를 반환, val2값이 null이 아니면 val2를 그대로 반환한다. 

 

예시를 한 번 살펴보자...

SELECT IFNULL('some value', 'some other value');
-> returns 'some value'

SELECT IFNULL(NULL,'some other value');
-> returns 'some other value'

SELECT COALESCE(NULL, 'some other value');
-> returns 'some other value' - equivalent of the IFNULL function

SELECT COALESCE(NULL, 'some value', 'some other value');
-> returns 'some value'

SELECT COALESCE(NULL, NULL, NULL, NULL, 'first non-null value');
-> returns 'first non-null value'

 

정리하자면..

 

COALSECE

- SQL 표준 함수 (이에 더 유연하고 표준 함수에 속하는 coalesce 함수를 사용하는 것을 추천함) 

- multiple argument를 처리할 수 있다 

 

IFNULL 

- MySQL에서만 고유한 기능 (MSSQL의 ISNULL과 동일하다)

- single argument를 처리할 수 있다. 

 

 

 

'SQL > 개념' 카테고리의 다른 글

[MySQL] 정규표현식, REGEXP  (0) 2022.07.14
[MySQL] JOIN 관련 정리  (0) 2022.07.13
[MySQL] CROSS-JOIN  (0) 2022.07.04
[MySQL] DATETIME 형식에서 특정 기간을 조회할 때  (0) 2022.07.01
[SQL 개념] Driving Table, Driven Table이란?  (0) 2022.06.29
Comments