sql - 将 int var 值设置为通配符
问题描述
我已经调查过了,我只是在努力接受这是不可能的。
我编写查询供其他人使用,并且通常在顶部包含一些声明的变量,以便用户可以在查询顶部“过滤”他们的搜索,而不必打扰其余部分。
有时用户可能不想指定特定变量的值,因为他们想返回所有类型。我知道这不是 SQL 的用途,并且有报告工具。关于如何做到这一点的任何建议?
DECLARE @foo int, @bar bit
SET @foo = *
SET @bar = *
SELECT *
FROM table
WHERE foo = @foo
AND bar = @bar
解决方案
*
不是有效值int
,即使值int
可以用作通配符,您也需要使用LIKE
not =
。
您在这里想要的是一个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
推荐阅读
- php - 如何使用 orWhere in Doctrine | 返回具有 ROLE_ADMIN 和 ROLE_USER 的用户
- windows-store-apps - 在 APPXBUNDLE 中打包 APPX
- ruby-on-rails - 使用 redis 作为 Rails 应用程序的数据库,以处理大量 api 请求
- sql - SSIS包变量配置
- c# - UWP 和 WPF 之间的 (UDP) 通信
- python - 熊猫数据框嵌套列表
- mysql - 此 sql 更新有什么问题?
- css - 宽度为 0 到 100 的 CSS 动画
- sql-server - SQL Server 的 PDF 报告选项
- java - 如何使用 iText7 在 PDF/A 中包含条形码?