ORACLE:SQL REGEXP_SUBSTR,返回第一个分号和第二个分号之间的列值。最后一次半clumn后的其他值

时间:2017-06-07 03:13:20

标签: sql regex oracle

varchar:BLAH:123:678

在第一个半列和第二个列之间需要值:123 最后半列后需要的值:678

2 个答案:

答案 0 :(得分:2)

假设你总是只有两个':',这是没有正则表达式的解决方案,乍一看可能不那么优雅,但比正则表达式更快:

SELECT SUBSTR(
              yourString,
                INSTR(yourString, ':') + 1,
                INSTR(yourString,':', 1, 2 )
                  - INSTR(yourString, ':') - 1
             ),
       SUBSTR(
              yourString,
              INSTR(yourString, ':', 1, 2) +1
             )
  FROM (SELECT 'BLAH:123:678' AS yourString FROM DUAL)

答案 1 :(得分:0)

使用以下正则表达式:

SELECT REGEXP_SUBSTR ('BLAH:123:678', ':(\d+):', 1, 1, NULL, 1) first_val,
       REGEXP_SUBSTR ('BLAH:123:678', '(\d+)$', 1, 1, NULL, 1) second_val
  FROM DUAL

输出:

first_Val  second_val
123        678