ORACLE:SQL REGEXP_SUBSTR,返回第一个分号和第二个分号之间的列值。最后一次半聚集后的其他值
瓦查尔:布拉:123:678 第一个半列和第二个半列之间的需要值:123 最后半列后需要值:678使用以下正则表达式:ORACLE:SQL REGEXP_SUBSTR,返回第一个分号和第二个分号之间的列值。最后一次半聚集后的其他值,sql,regex,oracle,Sql,Regex,Oracle,瓦查尔:布拉:123:678 第一个半列和第二个半列之间的需要值:123 最后半列后需要值:678使用以下正则表达式: 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 12
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
假设您总是有两个“
”:“
,这是一个没有regexp的解决方案,乍一看可能不那么优雅,但比regexp更快:
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)
你试过INSTR吗?,从反面往右转INSTR,从左边往右转INSTR,如果你不想纵向编码,你试过什么?有一些很好的帖子和这篇很相似。