gpt4 book ai didi

sql-server - 在 WHERE 子句中使用可为空的列

转载 作者:行者123 更新时间:2023-12-03 09:59:21 24 4
gpt4 key购买 nike

假设在 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 静态代码分析器会产生以下错误:

Warning : SR0007 : Microsoft.Performance : Nullable columns can cause final results to be evaluated as NULL for the predicate.

我没有看到这里的问题。该错误与性能有关; MSDN 说我应该使用 ISNULL()——但是与 NULL 的相等比较总是错误的,对吗?我是不是遗漏了什么,或者警告是错误的?

最佳答案

我认为它指的是 WHERE 子句。它是说您的参数和您的列都可以为 NULL,在这种情况下,您的 WHERE 子句不再评估为真/假。通过将可为 null 的列汇集到一个始终定义了值的列(通过 ISNULL),逻辑上您的状态会更好。

Here's the Microsoft documentation on that error.

另一方面,据推测,NULL 会使查询速度变慢。

关于sql-server - 在 WHERE 子句中使用可为空的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1852111/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com