sql - 有条件地设置 SQL 中的 AND/OR 运算符
问题描述
我有以下选择查询:
SELECT * FROM Table1
WHERE condition1 AND condition2 AND condition3 AND/OR condition4
我想在AND/OR
这里设置基于另一个变量,例如DECLARE @Operator [nvarchar](max) = 'AND'
. 如果@Operator
是“AND”,则此处的运算符将是AND
,并且与“OR”类似。
有什么好的方法吗?
解决方案
我要么动态构造 SQL 语句,要么使用如下语句:
DECLARE @AndOperator BIT = 0; --set to 1 to use AND instead of OR
SELECT * FROM Table1
WHERE
((@AndOperator = 0 AND (condition1 AND condition2 AND condition3 OR condition4)) OR
(@AndOperator = 1 AND (condition1 AND condition2 AND condition3 AND condition4)))
根据逻辑结构,可能会进行其他简化。
在这种情况下,我更喜欢使用动态 SQL,但上面的语句可以在存储过程中使用。
推荐阅读
- python - 从python中的列表中删除元素
- image - 我们可以使用经过图像分类训练的模型来帮助在 tensorflow 中进行对象检测吗?
- php - How to get year + 1 if the date is already passed
- javascript - 如何在 amcharts 强制有向图中仅为孩子设置命中事件?
- apache-kafka - How to add a StateStore using StateStoreBuilder in a Spring Cloud Stream Kafka Streams application
- sql - SQL:使用 CASE 将一个表中的记录与另一个表中的计数连接起来
- html - iOS 上的 Facebook 应用内浏览器无法正确处理 iframe 中的输入
- excel - 使用 TEXT 函数比较 Excel 中的两个日期。某些日期的异常行为
- elasticsearch - 获取 Elastic Search 索引中所有重复文档的列表
- python - 使用 Python 了解 Open CV 中的椭圆参数