SQL NULL 함수
- 이전 페이지 SQL Nulls
- 다음 페이지 SQL 데이터 타입
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
- 이전 페이지 SQL Nulls
- 다음 페이지 SQL 데이터 타입