Oracle 9i中字符之间的子字符串 [英] Substring between characters in Oracle 9i

查看:149
本文介绍了Oracle 9i中字符之间的子字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在更高版本中,我可以使用此regexp_substr:

In later versions I can use this regexp_substr:

SELECT 
    ID, 
    regexp_substr(ID, '[^.]+', 1, 2) DATA 1, 
    regexp_substr(ID, '[^.]+', 1, 3) DATA 2 
FROM employees

表格:员工

ID
--------------------------
2017.1.3001-ABC.01.01
2017.2.3002-ABCD.02.02
2017.303.3003-ABC.03.03
2017.404.3004-ABCD.04.04

预期输出:

ID                       DATA 1 DATA 2
------------------------ ------ ---------
2017.1.3001-ABC.01.01    1      3001-ABC
2017.2.3002-ABCD.02.02   2      3002-ABCD
2017.303.3003-ABC.03.03  303    3003-ABC
2017.404.3004-ABCD.04.04 404    3004-ABCD

请帮助我获取 SQL Oracle 9i 中ID列中.个字符之间的子字符串.

Please help me to get the sub-string between . characters in ID column in SQL Oracle 9i.

推荐答案

您不需要正则表达式-只需使用SUBSTRINSTR:

You don't need regular expressions - just use SUBSTR and INSTR:

SELECT id,
       SUBSTR( id, dot1 + 1, dot2 - dot1 - 1) AS data1,
       SUBSTR( id, dot2 + 1, dot3 - dot2 - 1) AS data2
FROM   (
  SELECT id,
         INSTR( id, '.', 1, 1 ) AS dot1,
         INSTR( id, '.', 1, 2 ) AS dot2,
         INSTR( id, '.', 1, 3 ) AS dot3
  FROM   employees
);

这篇关于Oracle 9i中字符之间的子字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆