gpt4 book ai didi

如果参数为空,SQL 将忽略 WHERE 的一部分

转载 作者:太空狗 更新时间:2023-10-30 01:39:31 26 4
gpt4 key购买 nike

我有一个基于 4 个参数从表中获取信息的存储过程。

我想根据参数获取值,但如果参数为 NULL,则不会检查该参数。因此,如果所有 4 个参数都为空,我将显示整个表格。

这是我的 SP(如您所见,这仅适用于 1 个参数 atm):

CREATE PROCEDURE myProcedure
@Param1 nvarchar(50),
@Param2 nvarchar(50),
@Param3 nvarchar(50),
@Param4 nvarchar(50)
AS
BEGIN
IF(@Param1 IS NULL)
BEGIN
SELECT Id, col1, col2, col3, col4 FROM myTable
END
ELSE
BEGIN
SELECT Id, col1, col2, col3, col4 FROM myTable WHERE col1 LIKE @Param1+'%'
END
END

有没有什么方法可以为每个可能的组合(15 个 IF)设置一个 IF

最佳答案

怎么样

SELECT Id, col1, col2, col3, col4 
FROM myTable
WHERE col1 LIKE @Param1+'%'
OR @Param1 IS NULL

在这种特定情况下,您也可以使用

SELECT Id, col1, col2, col3, col4 
FROM myTable
WHERE col1 LIKE ISNULL(@Param1,'')+'%'

但通常你可以尝试类似的东西

SELECT Id, col1, col2, col3, col4 
FROM myTable
WHERE (condition1 OR @Param1 IS NULL)
AND (condition2 OR @Param2 IS NULL)
AND (condition3 OR @Param3 IS NULL)
...
AND (conditionN OR @ParamN IS NULL)

关于如果参数为空,SQL 将忽略 WHERE 的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17850726/

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