我有一个项目表,每个项目都有一个项目ID(int)。我想只显示基于字符串的项目ID的项目。例如,我想显示项目" 12,1005,2"。这个字符串每次都不同。我该怎么做?
答案 0 :(得分:0)
如果您使用的是Oracle,则可以使用IN:
select from item i where i.id in (12,1005,2)
答案 1 :(得分:0)
您的参数是否总是由3个数字组成,或者在运行时可能有所不同? 如果它已修复,你可以使用substr和instr来剪切
答案 2 :(得分:0)
我会考虑Justin Cave记录的问题How can I select from list of values in Oracle。 Tom Kyte在他的Ask Tom网站上记录了一种类似的方法(没有regexpressions)。
由于您使用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的解析列表函数(与我上面提到的问题相关的答案)