此问题已在此处有答案:
Oracle - need to extract text between given strings(4个答案)
Oracle SQL: Getting text between two sentences(1个答案)
上个月关门了。
我有这个字符串'013654127411422599412405412123AB>Z4204015479'.我需要99
(可能是10)和>
之间的所有数字。
我试着得到这个:
regexp_substr('013654127411422599412405412123AB>Z4204015479','[^99|10](.)([^(>)]+)')
但它不工作。结果是:
3654127411422599412405412123AB
预期结果:
412405412123AB
有人能帮帮我吗?
2条答案
按热度按时间4dc9hkyq1#
您可以使用
此外,如果可以有多个字符,只需使用
(99|10)(\w+)>
正则表达式匹配99
或10
并将其捕获到Group 1中,然后将任何一个或多个单词字符捕获到Group 2中,后跟一个>
字符。(99|10)([^>]+)
正则表达式更通用一些,它匹配并捕获到第2组99
或10
中,然后捕获到第2组中除>
之外的任何一个或多个字符。注意
regexp_substr
中的2
参数,它提取存储在组2中的值。yv5phkfx2#
必须是regex吗?因为,在大型数据集上,
substr + instr
组合很可能会优于它,而且相当微不足道。样本数据(下划线部分代表预期结果):
查询方式: