SQL NULL 함수

SQL ISNULL()、NVL()、IFNULL() 및 COALESCE() 함수

아래 "Products" 테이블을 참조하세요:

P_Id ProductName UnitPrice UnitsInStock UnitsOnOrder
1 컴퓨터 699 25 15
2 프린터 365 36  
3 전화 280 159 57

가령 "UnitsOnOrder" 가 선택 사항이며 NULL 값을 포함할 수 있습니다.

아래와 같은 SELECT 문을 사용합니다:

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

위의 예제에서 "UnitsOnOrder" 값이 NULL이면 결과는 NULL입니다.

마이크로소프트의 ISNULL() 함수는 NULL 값에 대한 처리 방식을 정의합니다.

NVL(), IFNULL(), COALESCE() 함수도 같은 결과를 얻을 수 있습니다.

여기서는 NULL 값이 0이 되기를 원합니다.

아래에서 "UnitsOnOrder"가 NULL이면 계산에 불리하므로, NULL 값이면 ISNULL()이 0을 반환합니다.

SQL Server / MS Access

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

Oracle

Oracle은 ISNULL() 함수가 없습니다. 그러나 같은 결과를 얻을 수 있는 NVL() 함수를 사용할 수 있습니다:

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

MySQL

MySQL은 ISNULL()와 유사한 함수를 가지고 있습니다. 그러나 그 작동 방식은 마이크로소프트의 ISNULL() 함수와 다릅니다.

MySQL에서는 IFNULL() 함수를 사용할 수 있습니다. 이렇게:

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

또는 COALESCE() 함수를 사용할 수 있습니다. 이렇게:

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