Skip to content

32. IFNULL(), ISNULL(), COALESCE(), and NVL()


1. IFNULL(), ISNULL(), COALESCE(), and NVL() Functions

  • 다음은 Northwind 샘플 데이터베이스의 OrderDetails 테이블이다.


001


  • UnitsOnOrder 열이 선택 사항이고 NULL 값을 포함할 수 있다고 가정할 때, 다음 SELECT 문을 보자.


SELECT ProductName, UnitPrice * (UnitsInStock + UnitsOnOrder)
FROM Products;


  • 위의 예에서 UnitsOnOrder 값 중 하나라도 NULL이면 결과는 NULL이 된다.


2. Solutions

1) MySQL

  • MySQL에서 IFNULL() 함수를 사용하면 표현식이 NULL일 때 대체 값을 반환할 수 있다.


SELECT ProductName, UnitPrice * (UnitsInStock + IFNULL(UnitsOnOrder, 0))
FROM Products;


  • 또한 다음과 같이 COALESCE() 함수를 사용할 수 있다.


SELECT ProductName, UnitPrice * (UnitsInStock + COALESE(UnitsOnOrder, 0))
FROM Products;


2) SQL Server

  • SQL Server에서 ISNULL() 함수를 사용하면 표현식이 NULL일 때 대체 값을 반환할 수 있다.


SELECT ProductName, UnitPrice * (UnitsInStock + ISNULL(UnitsOnOrder, 0))
FROM Products;


3) MS Access

  • MS Access에서 IsNull() 함수는 표현식이 null 값이면 TRUE(-1)를 반환하고 그렇지 않으면 FALSE(0)를 반환한다.


SELECT ProductName, UnitPrice * (UnitsInStock + IIF(IsNull(UnitsOnOrder), 0, UnitsOnOrder))
FROM Products;


4) Oracle

  • Oracle에서 NVL() 함수를 사용하면 표현식이 NULL일 때 대체 값을 반환할 수 있다.


SELECT ProductName, UnitPrice * (UnitsInStock + NVL(UnitsOnOrder, 0))
FROM Products;

References