Oracle的Regexp日期提取

ybzsozfc  于 2023-10-16  发布在  Oracle
关注(0)|答案(1)|浏览(136)

我需要从字符串“Verify renter did not pick up vehicle amt 400$.”中提取日期部分。
采取的措施:需要与供应商进行电话跟进
下一个操作日期时间:2023年5月4日09:00:00本地”
我试过使用'\d{1,2}',但对于少数情况,它从400$中提取40,我也试过使用substr(comment,-28)提取“04-May-2023 09:00:00 Local”,但在少数情况下,它只在最后提到EST,因此这在这种情况下不起作用。
需要你的帮助

t0ybt7op

t0ybt7op1#

基于您发布的示例数据:

SQL> with test (col) as
  2    (select 'Verify renter did not pick up vehicle amt 400$.
  3    Action Taken:Need Followup Call with Supplier
  4    Next Action DateTime: 04-May-2023 09:00:00 Local' from dual
  5    union all
  6    select 'whatever text goes here 500$ and action taken was: nothing while
  7    next action DateTime: 01-Sep-2023 11:00:00 EST' from dual
  8    ),

一个简单的选择是使用substr + instr组合;我一步一步地做,以使它更清楚,但你可以(如果你想)* 合并 * 成一个。
此外,它**取决于源数据。因为你只贴了一个例子,我们只能试着想象你还可能有什么。然而,由于没有证据表明实际上有任何不同,在这里你。

9  temp as
 10    -- extract everything after "DateTime"
 11    (select substr(col, instr(col, 'DateTime')) val
 12     from test
 13    )
 14  -- extract everything between the 1st and and the 3rd space
 15  select substr(val, instr(val, ':') + 2,
 16                     instr(val, ' ', 1, 3) - instr(val, ':') - 1
 17               ) result
 18  from temp;

RESULT
--------------------------------------------------------------------------------
04-May-2023 09:00:00
01-Sep-2023 11:00:00

SQL>

相关问题