TOP

SQL NULL 함수

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


다음 테이블 "Products"("제품")을 살펴보겠습니다.

ProductIDProductNameSupplierIDCategoryIDUnitPrice
1Chais1110 boxes x 20 bags18.00
2Chang1124 - 12 oz bottles19.00
3Aniseed Syrup1212 - 550 ml bottles10.00
4Chef Anton's Cajun Seasoning2248 - 6 oz jars22.00
5Chef Anton's Gumbo Mix2236 boxes21.35

"UnitsOnOrder" 열이 선택 사항이고 NULL 값을 포함할 수 있다고 가정합니다.

다음 명령 SELECT을 고려하십시오.

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

위의 예에서 "UnitsOnOrder" 값 중 하나라도 NULL과 같으면 결과는 NULL이 됩니다.

결정

MySQL

MySQL IFNULL() 함수를 사용하면 표현식이 NULL과 같은 경우 대체 값을 반환할 수 있습니다.

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

또는 COALESCE() 함수를 사용할 수 있습니다. 예를 들면 다음과 같습니다.

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

SQL 서버

SQL Server ISNULL() 함수를 사용하면 표현식에 NULL 값이 있는 경우 대체 값을 반환할 수 있습니다.

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

또는 COALESCE() 함수를 사용할 수 있습니다. 예를 들면 다음과 같습니다.

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

MS 액세스

MS Access 함수 IsNull()는 표현식이 null이면 TRUE(-1)을 반환하고, 그렇지 않으면 FALSE(0)을 반환합니다.

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

Oracle

Oracle NVL() 함수는 동일한 결과를 얻습니다.

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

또는 COALESCE() 함수를 사용할 수 있습니다. 예를 들면 다음과 같습니다.

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