暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 从特定字符之间返回文本

askTom 2017-02-28
203

问题描述

我在下面存储的列中有一些文本。带有时间/日期戳,工人姓名,职位和团队很长。

“在HH: DD/MM/YYYY上的MMPM通过姓氏的姓氏进行验证职位: 工人,组织: 1区团队”

我想返回拆分为单独列的数据
一次,“at” 和 “on” 之间的部分,例如,HH:MMpm
一个用于日期,“开” 和 “按” 之间的部分,例如,DD/MM/YYYY
一个是名字,“by” 和 “职位名称” 之间的部分,例如,姓氏
一个用于职称,即 “职位名称” 和 “组织” 之间的部分,例如,工人
一个用于组织,在 ',组织:' 之后的部分,例如,区域1团队

我用这样的表达式做了第一部分
substr (文本 _ 答案,12,9) Verfied_time,
substr (文本 _ 答案,24,10) Verfied_date,

但是我不确定如何处理后面的部分。

感谢您的协助

专家解答

Instr给出了字符串中特定文本的位置。所以你可以将它与substr结合起来做你正在寻找的事情:

-Substr的第二个参数是起点。因此,将instr的结果传递为您的起点,在此之后的字符偏移
-第三是长度。因此,从上面的步骤中减去您的instr在标记结尾的字符串上的结果。还要减去多余字符的偏移量

例如:

with rws as (
  select 'Verified at HH:MMPM on DD/MM/YYYY by FirstName Surname Job Title: Worker, Organisation: Area 1 Team' str from dual
)
  select instr(str, 'by'), 
         instr(str, 'Job Title'), 
         substr(str, instr(str, 'by')+3, (instr(str, 'Job Title')-instr(str, 'by')-3))
  from   rws;

INSTR(STR,'BY')  INSTR(STR,'JOBTITLE')  SUBSTR(STR,INSTR(STR,'BY')+3,(INSTR(STR,'JOBTITLE')-INSTR(STR,'BY')-3))  
35               56                     FirstName Surname

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论