0

我有一个项目表,每个项目都有一个项目 ID(int)。我只想显示带有基于字符串的项目 ID 的项目。例如,我想显示项目“12、1005、2”。这个字符串每次都不一样。我该怎么做?

4

3 回答 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 回答