我在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))
有什么建议吗?
答案 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
);
例如,您还可以找到最后两个点的位置,并获取它们之间的值。