0

我在 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))

有什么建议吗?

4

1 回答 1

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
  );

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

于 2013-11-07T22:18:03.210 回答