oracle - 比较变量时如何在 where 语句中使用 CASE 和 IN
问题描述
我不想使用动态 SQL,所以我正在尝试不同的方法来改变我的 where 语句。
在我的 WHERE 语句中,有一行:
AND c.nregion = pnregion
pnregion
是俄罗斯的一些地区。这个语句帮助我的游标工作得更快,因为 Oracle 不必查看整个表。
问题是如果pnregion
等于 47 或 78 那么这一行应该是这样的
AND c.nregion in (47, 78)
怎么做?我应该以某种方式使用 CASE 还是在光标之外可以做些什么?
解决方案
您可以使用:
WHERE ( c.nregion = pnregion
OR ( pnregion IN ( 47, 78 )
AND c.nregion IN ( 47, 78 )
)
)
如果您想要两个以上的值,这很容易扩展,因为这些值可以添加到两个IN
过滤器中。
推荐阅读
- vb.net - 标签不包含位置属性
- ios - 使用 NSLayoutAnchor 不好吗?
- python - 使用映射创建新的 ElasticSearch 索引
- android - 弹出片段后,所有 Editexts 都将替换为相同的值
- python - Pytorch 通过知识转移保存和加载 VGG16
- algorithm - 如何从执行时间验证算法的时间复杂度?
- excel - EXCEL COUNTIFS 未正确计算比较 - 返回 0
- c++ - 10.8 == 10.8 评估为假?
- c# - 如何在asp.net web api中对请求进行排队并在服务器端执行?
- reactjs - 为 React 自定义 AWS Amplify 身份验证 UI