IFNULL(), ISNULL(), COALESCE(), NVL()
표현식이 NULL일 때 대체 값을 반환하는 방법을 알아보자.
제품 테이블
P_Id | ProductName | UnitPrice | UnitsInStock | UnitsOnOrder |
---|---|---|---|---|
1 | Jarlsberg | 10.45 | 16 | 15 |
2 | Mascarpone | 32.56 | 23 | |
3 | Gorgonzola | 15.67 | 9 | 20 |
구문
SELECT ProductName, UnitPrice * (UnitsInStock + UnitsOnOrder) FROM Products;
“UnitsOnOrder” 값 중 하나가 NULL이면 결과는 NULL이 된다.
MySQL
IFNULL() 함수를 사용하면 표현식이 NULL인 경우 대체 값을 반환할 수 있다.
SELECT ProductName, UnitPrice * (UnitsInStock + IFNULL(UnitsOnOrder, 0)) FROM Products;
COALESCE() 함수를 사용할 수도 있다.
SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0)) FROM Products;
SQL Server
IFNULL() 함수를 사용하면 표현식이 NULL인 경우 대체 값을 반환할 수 있다.
SELECT ProductName, UnitPrice * (UnitsInStock + ISNULL(UnitsOnOrder, 0)) FROM Products;
COALESCE() 함수를 사용할 수도 있다.
SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0)) FROM Products;
MS Access
IsNull() 함수는 표현식이 null 값인 경우 TRUE(-1)를 반환하고, 그렇지 않으면 FALSE(0)를 반환한다.
SELECT ProductName, UnitPrice * (UnitsInStock + IIF(IsNull(UnitsOnOrder), 0, UnitsOnOrder)) FROM Products;
Oracle
NVL() 함수는 동일한 결과를 반환한다.
SELECT ProductName, UnitPrice * (UnitsInStock + NVL(UnitsOnOrder, 0)) FROM Products;
COALESCE() 함수를 사용할 수도 있다.
SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0)) FROM Products;
참고
W3C School - SQL NULL Functions
W3C School - SQL Tutorial