T-SQL:需要帮助理解 Where 子句中的 SQL 'Strange'



我在我不理解的原本直接查询的Where子句中具有以下代码

    ... AND  --Filter on StoreID
(
('545' IS NOT NULL AND a.StoreID IN (545)) OR
('545' IS NULL)
)
AND ...

查询出现,如果我将其更改为:

,将返回完全相同的结果
... AND a.StoreID IN (545) AND ...

我感谢您对此的任何帮助。

谢谢,预先!

看起来好像'545'的值是通过参数传递的,主要用于存储过程或通过应用程序的动态SQL生成:

(@value IS NOT NULL AND a.StoreID IN (@value)) OR
(@value IS NULL)

如果@value不为null,或选择"所有"记录,当@Value为null时,此类子句将在搜索中进行搜索。

通常,如果提供值,这将有条件地过滤结果

最新更新