首页 > 解决方案 > 将 int var 值设置为通配符

问题描述

我已经调查过了,我只是在努力接受这是不可能的。

我编写查询供其他人使用,并且通常在顶部包含一些声明的变量,以便用户可以在查询顶部“过滤”他们的搜索,而不必打扰其余部分。

有时用户可能不想指定特定变量的值,因为他们想返回所有类型。我知道这不是 SQL 的用途,并且有报告工具。关于如何做到这一点的任何建议?

DECLARE @foo int, @bar bit
SET @foo = *
SET @bar = *

SELECT *
FROM table

WHERE foo = @foo
AND bar = @bar

标签: sql

解决方案


*不是有效值int,即使int可以用作通配符,您也需要使用LIKEnot =

您在这里想要的是一个NULL值和正确的布尔逻辑。

SELECT {Columns}
FROM [Table]
WHERE (foo = @foo OR @foo IS NULL)
  AND (bar = @bar OR @bar IS NULL)
OPTION (RECOMPILE);-- Comment out/remove if you aren't using T-sQL due to incorrect tagging

推荐阅读