ORACLE:SQL REGEXP_SUBSTR 返回第一个分号和第二个分号之间的列值。在最后半个 clumn 之后还有其他值
Posted
技术标签:
【中文标题】ORACLE:SQL REGEXP_SUBSTR 返回第一个分号和第二个分号之间的列值。在最后半个 clumn 之后还有其他值【英文标题】:ORACLE:SQL REGEXP_SUBSTR that returns the column value between 1st semicolon and second one. Also other value after last semi clumn 【发布时间】:2017-06-07 03:13:20 【问题描述】:varchar: BLAH:123:678
需要第一个半列和第二个半列之间的值:123 最后半列后需要值:678
【问题讨论】:
你试过INSTR吗?,instr from reverse 是从右边得到,instr 是从左边得到,如果你不想编码长度的话 你试过什么?有一些很好的帖子和这个很相似,***.com/questions/17795794/…。 【参考方案1】:假设你总是有两个':'
,这是没有正则表达式的解决方案,乍一看可能不那么优雅,但比正则表达式更快:
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)
【讨论】:
【参考方案2】:使用下面的正则表达式:
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
【讨论】:
以上是关于ORACLE:SQL REGEXP_SUBSTR 返回第一个分号和第二个分号之间的列值。在最后半个 clumn 之后还有其他值的主要内容,如果未能解决你的问题,请参考以下文章
Oracle SQL:带有 REGEXP_SUBSTR 表达式的插入查询很长(拆分字符串)
Oracle SQL 正则表达式 RegExp_SubStr End Of Line (chr(10) 在搜索文本中返回 null
ORACLE:SQL REGEXP_SUBSTR 返回第一个分号和第二个分号之间的列值。在最后半个 clumn 之后还有其他值