sql - Where 子句 SQL (Oracle) 中的案例
问题描述
我想过滤 Where 语句中的查询。我想将 ID 与“IN”进行比较,但前提是输入具有值。如果此文本为空,我不想比较。防止错误查询
例子:
StringProductIDs = ''
WHERE
({Issue}.[ServiceRequestId] IN (@StringServiceRequestIDs))
AND ({ServiceRequest}.[Id] IN (@StringServiceRequestIDs))
AND ({Product}.[Id] IN (@StringProductIDs) OR @StringProductIDs = '') /* Is this one that i want to prevent*/
AND EXTRACT(MONTH FROM {Sprint}.[CompleteDate]) = @Month
AND EXTRACT(YEAR FROM {Sprint}.[CompleteDate]) = @Year
在这种情况下,如果作为参数传递的值具有值,我只想过滤 things.id。如果它是空的,我不想比较并避免使用“AND”行
或者尝试另一种方法:)。仅当此输入具有值时才可以运行查询?如果它没有值,它什么也不返回。如果输入值正常运行 –
非常感谢
解决方案
你需要OR
:
WHERE (things.active = 1 AND things.state = 2) AND
(things.id IN (@INPUT) OR @INPUT IS NULL);
推荐阅读
- c++ - 如何以不同的方式编写 reinterpret_cast<>
- html - 将特定行的 CSS 网格 2 列拆分为 3 列
- sql-server - 如何根据 SQL Server 中的 xQuery 的 XML 文件属性将值插入表中?
- matlab - 在 MATLAB 中将大图像写入 PDF
- java - 通过 java 8 lambda 更新 hashmap 中的对象
- uipopovercontroller - 更改 iOS 13 UIPopoverPresentationController 模糊和阴影量?
- java - 如何在 ValueEventListener 之外访问变量的值
- mysql - 如何在 MySQL 表中最好地构造这些数据?
- python - RandomForest 的学习曲线
- python - 如何使用 asyncio 并行化阻塞代码