gpt4 book ai didi

sql - 相当于SQL中的VB AndAlso?

转载 作者:行者123 更新时间:2023-12-02 22:45:19 29 4
gpt4 key购买 nike

SQL 中是否有相当于 VB 的 AndAlso/OrElse 和 C# 的 &&/||(SQL服务器 2005)。我正在运行类似于以下内容的选择查询:

SELECT a,b,c,d
FROM table1
WHERE
(@a IS NULL OR a = @a)
AND (@b IS NULL OR b = @b)
AND (@c IS NULL OR c = @c)
AND (@d IS NULL OR d = @d)

例如,如果“@a”参数作为 NULL 传入,则评估 WHERE 子句的第二部分 (a = @a) 是没有意义的。有没有办法通过使用特殊语法或重写查询来避免这种情况?

谢谢,詹姆斯。

最佳答案

保证求值顺序的唯一方法是使用CASE

WHERE
CASE
WHEN @a IS NULL THEN 1
WHEN a = @a THEN 1
ELSE 0
END = 1
AND /*repeat*/

根据我的经验,这通常比让数据库引擎对其进行排序要慢。

TerrorAustralis 的答案通常是不可为空列的最佳选择

关于sql - 相当于SQL中的VB AndAlso?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1649237/

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