oracle 中截取字符串

qq_34977335 2017-06-21 11:59:42
从表中(v_table)截取字段(error_note)中字符串"RspType" 往前推出现的第一个[ ]中的字符串kkkk和PPPP,
XXXXXXX,KKKK以及PPPP长度不固定,如何截取?请教各位大神,谢谢啦。
select error_note from v_table ;
XXXXXXXXXXXXXXXX[KKKK_PPPP]","RspType"XXXXXXXXXXXXXXXX
小新手,谢谢各位啦
...全文
174 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
花开了叫我 2017-06-21
  • 打赏
  • 举报
回复
百度regexp_substr
qq_34977335 2017-06-21
  • 打赏
  • 举报
回复
引用 5 楼 chengccy 的回复:
WITH T AS
 (SELECT 'XXXXXXXXXXXXXXXX[KKKK_PPPP]","RspType"XXXXXXXXXXXXXXXX' S
  FROM   DUAL
  UNION ALL
  SELECT 'XXX[XXXX]XXXXXXXXX[KKKK_PPPP]","RspType"XXXXXXXXXXXXXXXX' S
  FROM   DUAL
  UNION ALL
  SELECT 'XXXXXXXXXXXXXXXX[KKKK_PPPP]",asdfasdfa"RspType"XXXXXXXXXXXXXXXX' S
  FROM   DUAL)
SELECT S, S1, REGEXP_SUBSTR(S1, '[^_]+', 1, 1) K,
       REGEXP_SUBSTR(S1, '[^_]+', 1, 2) P
FROM   (SELECT S, REGEXP_REPLACE(S, '.*\[([^\[]+)\].*"RspType".*', '\1') S1
         FROM   T)
谢谢大神,我今天才注册,发的第一个帖子,就获得了这么多好心人的帮助,扎心了,老铁!
qq_34977335 2017-06-21
  • 打赏
  • 举报
回复
引用 4 楼 gaojiagang 的回复:
kkkk和pppp是用_分割的吗? 如果是可以用 select substr(error_note ,INSTR(error_note, '[')+1,INSTR(error_note, '_')-INSTR(error_note, '[')-1) kk , substr(error_note ,INSTR(error_note, '_')+1,INSTR(error_note, ']')-INSTR(error_note, '_')-1) pp from v_table
谢谢大神,我今天才注册,发的第一个帖子,就获得了这么多好心人的帮助,扎心了,老铁!
chengccy 2017-06-21
  • 打赏
  • 举报
回复
WITH T AS
 (SELECT 'XXXXXXXXXXXXXXXX[KKKK_PPPP]","RspType"XXXXXXXXXXXXXXXX' S
  FROM   DUAL
  UNION ALL
  SELECT 'XXX[XXXX]XXXXXXXXX[KKKK_PPPP]","RspType"XXXXXXXXXXXXXXXX' S
  FROM   DUAL
  UNION ALL
  SELECT 'XXXXXXXXXXXXXXXX[KKKK_PPPP]",asdfasdfa"RspType"XXXXXXXXXXXXXXXX' S
  FROM   DUAL)
SELECT S, S1, REGEXP_SUBSTR(S1, '[^_]+', 1, 1) K,
       REGEXP_SUBSTR(S1, '[^_]+', 1, 2) P
FROM   (SELECT S, REGEXP_REPLACE(S, '.*\[([^\[]+)\].*"RspType".*', '\1') S1
         FROM   T)
雨巷啊 2017-06-21
  • 打赏
  • 举报
回复
kkkk和pppp是用_分割的吗? 如果是可以用 select substr(error_note ,INSTR(error_note, '[')+1,INSTR(error_note, '_')-INSTR(error_note, '[')-1) kk , substr(error_note ,INSTR(error_note, '_')+1,INSTR(error_note, ']')-INSTR(error_note, '_')-1) pp from v_table
qq_34977335 2017-06-21
  • 打赏
  • 举报
回复
regexp_substr 上百度查了,但还是不会用,我是有多菜
ACE-2017 2017-06-21
  • 打赏
  • 举报
回复
可以使用substr函数

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧