oracle如何将备注字段中的年月提取出来?

image.png

image.png

chenew 发布于 2022-7-18 17:49 (编辑于 2022-7-19 09:12)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
CD20160914Lv8专家互助
发布于2022-7-18 20:16

image.png

select 

t.strcont,

regexp_substr(t.strcont,'((19|2\d)\d{2})-\d{2}') as 日期

from (

select '我是测试的数据2012-12-05~2021-12-15今天这个数据是一样的测试2035' as strcont from dual

union all

select '我是这个数据2012年不是吧2022-03-02' as strcont from dual

) t

  • chenew chenew(提问者) 因为字段中的内容格式不固定,所有采用正则的方式最优,谢谢!
    2022-07-19 09:13 
最佳回答
0
好好生活好好学习Lv7高级互助
发布于2022-7-18 17:57(编辑于 2022-7-18 18:14)

substr( 字段,  INSTR(字段, '~' ) + 1,7) 结束日期

image.png

substr( 字段,  INSTR(字段, '~' ) - 10, 7 ) 开始日期

image.png

---------

-1你试着调整一下看,加不加

--------取年月 截取的10 改为 7

  • 听雨轩 听雨轩 你这个是截取后面的那个日期,用:作为定位字符吧。 而且截出来的不一定是日期,还得判断
    2022-07-18 18:17 
  • 好好生活好好学习 好好生活好好学习 回复 听雨轩 用的 \'~\'
    2022-07-18 18:19 
  • 好好生活好好学习 好好生活好好学习 回复 听雨轩 没懂你的意思?为什么要用:作为定位符呢
    2022-07-18 18:40 
  • 听雨轩 听雨轩 回复 好好生活好好学习 我看图他是要截取前面的日期吧。。。
    2022-07-18 18:53 
  • 好好生活好好学习 好好生活好好学习 回复 听雨轩 我的都有啊,前后都取了,我还以为有什么问题呢;
    2022-07-18 18:55 
最佳回答
0
听雨轩Lv5初级互助
发布于2022-7-18 18:28

WITH tmp AS (

SELECT '管理费用:2022-01-01~2020-04-07,' AS cn FROM dual

)

SELECT substr(REGEXP_SUBSTR(cn,':.*~'),2,7) FROM tmp

  • 5关注人数
  • 358浏览人数
  • 最后回答于:2022-7-19 09:12
    请选择关闭问题的原因
    确定 取消
    返回顶部