假设在SQL Server中有以下表定义:
在这种情况下,Visual Studio静态代码分析器会产生以下错误:
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
在这种情况下,Visual Studio静态代码分析器会产生以下错误:
我不明白问题出在哪里。这个错误与性能有关;MSDN说我应该使用ISNULL() -- 但是与NULL进行相等比较总是false,对吧?我是否遗漏了什么,还是这个警告只是错了?警告:SR0007: Microsoft.Performance:Nullable 列可能导致谓词的最终结果被评估为NULL。