gpt4 book ai didi

SQL 服务器 : Where clause inside IF .。别的

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

如标题所述,我在 SQL 存储过程中的 WHERE 子句中苦苦挣扎。

我得到了一个 SELECT 查询,它很好地连接了多个表,最后 if 得到了一个 WHERE 子句,它给出了要搜索的特定值。

我的问题是我想为 2 个不同的 WHERE 子句扩展这个存储过程,但是我无法让我的 IF ELSE 正确解析查询。

例如:

SELECT ....... 
FROM TABLE_X
INNER JOIN TABLE_Y.....
WHERE
man.Klant_ID = @Klant
AND (@ManID = 0 OR man.ID = @ManID)
AND .... (which continues like the rule above)

在这里我想得到这样的东西:

SELECT ....... 
FROM TABLE_X
INNER JOIN TABLE_Y.....

IF @TEMPVAR = ''
WHERE man.Klant_ID=@Klant
AND (@ManID = 0 OR man.ID = @ManID)
AND...
ELSE
WHERE TABLE_X.ID IN (@TEMPVAR)

(@tempvar 应该包含逗号分隔的 ID,例如 10001,10002,10003)

我在语法上苦苦挣扎并搜索了一段时间,但似乎找不到正确的解决方案。

提前致谢!

最佳答案

您可以使用 CASE 来做到这一点:

SELECT ....... FROM TABLE_X
INNER JOIN TABLE_Y.....
WHERE TABLE_X.FIRSTCOLUMN =
CASE WHEN @TEMPVAR = '' THEN 123
ELSE 456
END

或直接在 WHERE 子句中使用 OR:

WHERE (@TEMPVAR = ''
AND man.Klant_ID=@Klant
AND (@ManID = 0 OR man.ID = @ManID)
AND...
)
OR
(@TEMPVAR <> ''
AND TABLE_X.ID IN (@TEMPVAR)
)

关于SQL 服务器 : Where clause inside IF .。别的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21713624/

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