gpt4 book ai didi

sql - 处理存储过程参数中的 NULL

转载 作者:行者123 更新时间:2023-12-01 13:39:01 25 4
gpt4 key购买 nike

我正在编写一个存储过程,它接受名为 @Vendor 的参数。我希望查询以这种方式工作,具体取决于 @Vendor 的值。

  1. IF @Vendor IS NOT NULL --> 过滤Vendorname = @Vendor

  2. IF @Vendor IS NULL --> 不要在 WHERE 子句中应用 Vendorname 过滤器

我想到的策略是应用一个 IF 分支来执行同一查询的两个版本,一个带有 Vendorname WHERE 子句过滤器,一个没有。

IF (@Vendor IS NOT NULL) {
select *
from table
where Vendorname = @Vendor;
} ELSE {
select *
from table;
}

该语法可能略有不正确,但我相信一般方法应该有效。

但是,我的问题是是否有更简洁的方法来执行此操作,而不是再次复制相同的 SQL 语句?

最佳答案

你可以把逻辑写成:

select *
from table
where (Vendorname = @Vendor) OR (@Vendor IS NULL)

请注意:如果您在 Vendorname 上有索引,这可能不如您的版本优化。

关于sql - 处理存储过程参数中的 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47393168/

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