Discoverer中的substr / instr计算

时间:2013-11-07 17:01:12

标签: oracle

我在Discoverer 10g中创建一个计算,只需要在两点之间获取信息(“。”)字符串的示例如下所示:

30068496.CR Order.ORDER ENTRY(1.1).Y.3

我只需要抓住最后两个时期之间的“Y”。

我已经接近了substr和instr函数,但还是只能隔离我想要的东西。 我最接近的是使用它:

SUBSTR(MSCG_CS_Pegging_Details.End_Demand_Item_Order_Number,
 INSTR(MSCG_CS_Pegging_Details.End_Demand_Item_Order_Number,'.',1,4)+1,
 INSTR(MSCG_CS_Pegging_Details.End_Demand_Item_Order_Number,'.',1,1)-1-
 INSTR(MSCG_CS_Pegging_Details.End_Demand_Item_Order_Number,'.',1,1))

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我不完全了解您的要求。您可以从字符串的末尾搜索 - 从末尾(或最后一个点)找到第一个点并减去1以获得最后一个点之前的字符,即“Y”。这是最简单也可能是最安全的方式。

 SELECT SUBSTR(str, INSTR(str, '.', -1, 1)-1, 1) search_str
   FROM
  (
   SELECT '30068496.CR Order.ORDER ENTRY(1.1).Y.3' str FROM dual
  );

例如,您还可以找到最后两个点的位置,并获取它们之间的值。