다음을 통해 공유


ISNULL(Transact-SQL)

적용 대상: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW) Microsoft Fabric의 SQL 분석 엔드포인트 Microsoft Fabric의 웨어하우스

NULL 지정된 대체 값으로 바꿉니다.

Transact-SQL 구문 표기 규칙

Syntax

ISNULL ( check_expression , replacement_value )

참고 항목

SQL Server 2014(12.x) 이전 버전의 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조하세요.

인수

check_expression

확인할 식입니다NULL. check_expression은 임의 형식이 될 수 있습니다.

replacement_value

check_expression 경우 반환할 식입니다NULL. replacement_value는 암시적으로 check_expression 형식으로 변환되는 형식이어야 합니다.

반환 형식

check_expression 식과 같은 유형을 반환합니다. 리터럴 NULL 이 check_expression 제공되면 replacement_valueISNULL 데이터 형식을 반환합니다. 리터럴 NULL 이 check_expression 제공되고 replacement_value 제공되지 ISNULL 않으면 int를 반환합니다.

설명

check_expression이 아닌 NULL경우 반환됩니다. 그렇지 않으면 replacement_value 형식이 다른 경우 암시적으로 check_expression 형식으로 변환된 후에 반환됩니다. replacement_valuereplacement_valuecheck_expression보다 긴 경우 잘릴 수 있습니다.

참고 항목

COALESCE를 사용하여 null이 아닌 첫 번째 값을 반환합니다.

예제

이 문서의 Transact-SQL 코드 샘플은 AdventureWorks2022 또는 AdventureWorksDW2022 샘플 데이터베이스를 사용하며, 이는 Microsoft SQL Server 예시 및 커뮤니티 프로젝트(Microsoft SQL Server Samples and Community Projects) 홈 페이지에서 다운로드할 수 있습니다.

A. AVG에서 ISNULL 사용

다음 예에서는 모든 제품의 평균 무게를 구하는 방법을 보여 줍니다. 테이블 열 Product 에 있는 모든 NULL 항목의 Weight 값을 50 대체합니다.

USE AdventureWorks2022;
GO
SELECT AVG(ISNULL(Weight, 50))
FROM Production.Product;
GO

결과 집합은 다음과 같습니다.

59.79

B. ISNULL 사용

다음 예에서는 AdventureWorks2022에서 모든 특별 행사에 대한 설명, 할인율, 최소 수량 및 최대 수량을 선택하는 방법을 보여 줍니다. 특정 특별 제품의 NULLMaxQty 최대 수량이면 결과 집합에 표시된 것입니다0.00.

USE AdventureWorks2022;
GO
SELECT Description, DiscountPct, MinQty, ISNULL(MaxQty, 0.00) AS 'Max Quantity'
FROM Sales.SpecialOffer;
GO

결과 집합은 다음과 같습니다.

Description DiscountPct MinQty 최대 수량
No Discount 0.00 0 0
Volume Discount 11 to 14 0.02 11 14
Volume Discount 15 to 24 0.05 15 24
Volume Discount 25 to 40 0.10 25 40
Volume Discount 41 to 60 0.15 41 60
Volume Discount over 60 0.20 61 0
Mountain-100 Clearance Sale 0.35 0 0
Sport Helmet Discount-2002 0.10 0 0
Road-650 Overstock 0.30 0 0
Mountain Tire Sale 0.50 0 0
Sport Helmet Discount-2003 0.15 0 0
LL Road Frame Sale 0.35 0 0
Touring-3000 Promotion 0.15 0 0
Touring-1000 Promotion 0.20 0 0
Half-Price Pedal Sale 0.50 0 0
Mountain-500 Silver Clearance Sale 0.40 0 0

다음 예제에서는 에 대한 Color값을 문자열None로 바꾸는 NULL 데 사용합니다ISNULL.

USE AdventureWorks2022;
GO
SELECT ProductID,
    Name,
    ProductNumber,
    ISNULL(Color, 'None') AS Color
FROM Production.Product;

다음은 결과 집합의 일부입니다.

ProductID 이름 ProductNumber Color
1 Adjustable Race AR-5381 None
2 Bearing Ball BA-8327 None
3 BB Ball Bearing BE-2349 None
4 Headset Ball Bearings BE-2908 None
316 Blade BL-2036 None
317 LL Crankarm CA-5965 검정
318 ML Crankarm CA-6738 검정
319 HL Crankarm CA-7457 검정

C. NULL WHERE 절에서 테스트

값을 찾는 NULL 데 사용하지 ISNULL 마세요. 대신 IS NULL를 사용하세요. 다음 예에서는 무게 열에 NULL이 있는 모든 제품을 찾는 방법을 보여 줍니다. ISNULL 사이에 공백이 있습니다.

USE AdventureWorks2022;
GO
SELECT Name, Weight
FROM Production.Product
WHERE Weight IS NULL;
GO

예: Azure Synapse Analytics 및 분석 플랫폼 시스템(PDW)

D. AVG에서 ISNULL 사용

다음 예에서는 샘플 표에 있는 모든 제품의 평균 무게를 구하는 방법을 보여 줍니다. 테이블 열 Product 에 있는 모든 NULL 항목의 Weight 값을 50 대체합니다.

-- Uses AdventureWorksDW

SELECT AVG(ISNULL(Weight, 50))
FROM dbo.DimProduct;

결과 집합은 다음과 같습니다.

52.88

E. ISNULL 사용

다음 예제에서는 열 MinPaymentAmount 의 값을 테스트 NULL 하고 해당 행의 값을 0.00 표시하는 데 사용합니다ISNULL.

-- Uses AdventureWorks

SELECT ResellerName,
       ISNULL(MinPaymentAmount,0) AS MinimumPayment
FROM dbo.DimReseller
ORDER BY ResellerName;

다음은 결과 집합의 일부입니다.

ResellerName MinimumPayment
자전거 연합 0.0000
자전거 매장 0.0000
사이클 상점 0.0000
대형 자전거 회사 0.0000
일반 자전거 상점 200.0000
허용되는 판매 및 서비스 0.0000

F. IS NULL을 사용하여 WHERE 절에서 NULL 테스트

다음 예에서는 NULL 열에 Weight이 있는 모든 제품을 찾는 방법을 보여 줍니다. ISNULL 사이에 공백이 있습니다.

-- Uses AdventureWorksDW

SELECT EnglishProductName, Weight
FROM dbo.DimProduct
WHERE Weight IS NULL;