我使用的是Oracle 11G,并在以下字符串中包含以下字符串:
NAME
'String having ZT-01183 - App # 2'
'This String having AG-01183 with - Apps # 4'
我正在使用以下正则表达式,但我得到的是以下内容:ZT-01183 - App#2和AG-01183 with - Apps#4。
CASE
WHEN REGEXP_LIKE(NAME, 'ZT-|AG-|having')
THEN regexp_replace(NAME, '^.*? having ','')
END AS NEW_NAME
我只想在语句中获取下一个字符串,因此结果应该是AG-01183和ZT-01183。在我拥有之后我得到了一切。任何帮助将不胜感激。
答案 0 :(得分:1)
您可以使用
THEN regexp_replace(name, '.*having ([^ ]+).*', '\1')
编辑:
我最初使用lookbehind的想法似乎被甲骨文所打破,而不是看起来能够使用lookbehind。我的编辑使用群组来取回您想要的内容。
答案 1 :(得分:0)
请尝试:
THEN regexp_substr(NAME, '[A-Z]{2}-[0-9]{5}')