我有一个项目表,每个项目都有一个项目 ID(int)。我只想显示带有基于字符串的项目 ID 的项目。例如,我想显示项目“12、1005、2”。这个字符串每次都不一样。我该怎么做?
问问题
77 次
3 回答
0
如果您使用的是 Oracle,则可以使用IN:
select from item i where i.id in (12,1005,2)
于 2014-08-20T15:04:21.157 回答
0
您的参数是始终由 3 个数字组成,还是在运行时可能不同?如果它已修复,您可以使用 substr 和 instr 进行剪切
于 2014-08-20T16:45:02.620 回答
0
我会考虑 Justin Cave 记录的一种方法,问题是如何从 Oracle 中的值列表中进行选择。Tom Kyte 在他的 Ask Tom 网站上记录了类似的方法(没有正则表达式)。
由于您在使用 Oracle Reports 的 Oracle Apps 环境中,因此我仅提供一个使用 items 表的示例:
with x as
( select '12, 1005, 2' str from dual
)
select *
from inv.mtl_system_items_b item
where item.organization_id =
&org_id
and item.inventory_item_id in
(select to_number(regexp_substr(str,'[^,]+',1,level)) element
from x
connect by level <= length(regexp_replace(str,'[^,]+')) + 1
)
在 Oracle 报告中的程序上,您可以创建一个函数作为程序单元,该函数使用类似的逻辑执行此逗号分隔值参数的解析(再次,请参阅 Justin Cave 的解析列表函数(与我上面提到的问题相关的答案)。
于 2014-08-20T17:47:59.173 回答