다음을 통해 공유


SR0007: 식의 null 허용 열에 ISNULL(column, default_value)을 사용합니다.

규칙 ID

SR0007

범주

Microsoft.Performance

변경 수준

주요 변경 아님

원인

열에 NULL 값을 포함할 수 있는 비교 식에는 ISNULL 함수가 사용되지 않았습니다.

규칙 설명

코드가 두 NULL 값 또는 한 NULL 값을 다른 값과 비교하는 경우 코드는 알 수 없는 결과를 반환합니다.

위반 문제를 해결하는 방법

ISNULL 함수에 NULL 값을 포함할 수 있는 각 열을 래핑하여 비교 식에서 NULL 값을 처리하는 방법을 명시적으로 표시해야 합니다.

경고를 표시하지 않는 경우

비교 결과가 비활성화된 상태이므로 이 경고를 표시해야 합니다.

예제

이 예제에서는 간단한 테이블 정의 및 두 개의 저장된 프로시저를 보여 줍니다. 테이블은 NULL 값을 포함할 수 있는 열, [c2]를 포함합니다. 첫 번째 절차인 [ProcedureWithWarning]는 [c2]를 상수 값과 비교합니다. 두 번째 절차에서는 ISNULL 함수를 호출하여 [c2] 래핑함으로써 문제를 해결합니다.

CREATE TABLE [dbo].[Table1]
( 
[ID] INT NOT NULL IDENTITY(0, 1), 
[c1] INT NOT NULL PRIMARY KEY, 
[c2] INT
)
ON [PRIMARY] 

CREATE PROCEDURE [dbo].[ProcedureWithWarning]
AS
BEGIN
SELECT COUNT(*) FROM [dbo].[Table1]
 WHERE [c2] > 2;
END

CREATE PROCEDURE [dbo].[ProcedureFixed]
AS
BEGIN
SELECT COUNT(*) FROM [dbo].[Table1]
 WHERE ISNULL([c2],0) > 2;
END

참고 항목

개념

데이터베이스 코드를 분석하여 코드 품질 향상