それぞれにアイテムID(int)を持つアイテムのテーブルがあります。文字列に基づいたアイテム ID を持つアイテムのみを表示したい。たとえば、「12、1005、2」という項目を表示したいとします。この文字列は毎回異なります。どうすればいいですか?
3 に答える
0
Oracle を使用している場合は、INを使用できます。
select from item i where i.id in (12,1005,2)
于 2014-08-20T15:04:21.157 に答える
0
Justin Cave によって文書化されたアプローチを検討します。 How can I select from list of values in Oracleという質問があります。Tom Kyte は、同様のアプローチ (正規表現なし) を彼の Ask Tom サイトで文書化しています。
Oracle Reportsを使用するOracle Apps環境にいるため、アイテム表を使用した例を示します:
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 に答える
0
あなたのパラメータは常に3つの数字で構成されていますか、それとも実行時に異なる可能性がありますか?? 修正された場合は、substr と instr を使用してカットできます
于 2014-08-20T16:45:02.620 に答える