假设 SQL Server 中的表定义如下:
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 静态代码分析器会产生以下错误:
警告:SR0007:Microsoft.Performance:可为空的列可能导致最终结果被评估为谓词的 NULL。
我没有看到这里的问题。错误与性能有关;MSDN 说我应该使用 ISNULL() ——但与 NULL 的相等比较总是错误的,对吧?我错过了什么,还是警告是错误的?