gpt4 book ai didi

sql - SQL Server 2008 中的条件 WHERE 子句

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

我正在尝试对我的 SQL Server 2008 数据库中的表执行查询。我有一个使用五个 int 参数的存储过程。目前,我的参数定义如下:

@memberType int,
@color int,
@preference int,
@groupNumber int,
@departmentNumber int

此过程将为每个参数传递 -1 或更高的值。值 -1 表示 WHERE 子句不应考虑连接/子句中的该参数。如果参数的值大于 -1,我需要考虑我的 WHERE 子句中的值。我宁愿不使用 IF-ELSE 语句,因为在这种情况下它看起来很草率。

我看到了这个问题 here .但是,它对我不起作用。我认为原因是因为我的表中的每一列都可以有一个 NULL 值。有人在第五个答案中指出了这种情况。这似乎发生在我身上。

我的问题有什么巧妙的方法吗?还是我只需要蛮力它(我希望不是:()。

谢谢!

最佳答案

我过去做过这样的事情:

SELECT
.....
FROM
dbo.SOMETABLE AS T
WHERE
(T.memberType = @memberType OR @memberType = -1)
AND (T.color = @color OR @color = -1)
AND (T.preference = @preference OR @preference = -1)
AND (T.groupNumber = @groupNumber OR @groupNumber = -1)
AND (T.departmentNumber = @departmentNumber OR @departmentNumber = -1)

不过,一般来说,我不关心的参数是 NULL。那么查询就变成了:

SELECT
.....
FROM
dbo.SOMETABLE AS T
WHERE
(T.memberType = @memberType OR @memberType IS NULL)
AND (T.color = @color OR @color IS NULL)
AND (T.preference = @preference OR @preference IS NULL)
AND (T.groupNumber = @groupNumber OR @groupNumber IS NULL)
AND (T.departmentNumber = @departmentNumber OR @departmentNumber IS NULL)

关于sql - SQL Server 2008 中的条件 WHERE 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2798958/

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