SQLServerのテーブル定義を次のように想定します。
CREATE TABLE MyTable (
Id UNIQUEIDENTIFIER NULL,
Info VARCHAR(MAX)
)
そしてクエリ:
DECLARE @id UNIQUEIDENTIFIER
DECLARE @info VARCHAR(MAX)
IF @id IS NOT NULL
BEGIN
SELECT @info = Info
FROM MyTable
WHERE Id = @id
END
その場合、VisualStudio静的コードアナライザーは次のエラーを生成します。
警告:SR0007:Microsoft.Performance:NULL可能列により、述語の最終結果がNULLとして評価される可能性があります。
ここでは問題はわかりません。エラーはパフォーマンスに関連しています。MSDNはISNULL()を使用する必要があると言っていますが、NULLに対するequals比較は常にfalseですよね?私は何かが足りないのですか、それとも警告が間違っているのですか?