我使用的是Oracle11g,我希望使用REGEXP_SUBSTR来匹配给定模式的所有事件。例如
SELECT REGEXP_SUBSTR(' -> BSC Area-101202006A, BTS-101300014A, TRX-10;
Status = ADD IN ATOLL','([0-9]+\b?){1,}') "GSM" FROM dual上面提到的查询只返回第一个匹配项101202006,但是我想返回从字符串'101202006A‘和'101300014A’搜索和匹配'30‘的其他事件,并匹配9个字符的正则表达式和模式,并且应该返回101300014。
发布于 2018-02-08 13:29:48
REGEXP_SUBSTR返回一个值。您可以使用CONNECT BY LEVEL查找所有匹配项,然后根据需要使用like筛选行。
WITH t (pat)
AS (SELECT ' -> BSC Area-101202006A, BTS-101300014A, TRX-10;
Status = ADD IN ATOLL'
FROM DUAL)
SELECT *
FROM ( SELECT REGEXP_SUBSTR (pat,
'([0-9]+\b?){1,}',
1,
LEVEL)
AS "GSM"
FROM t
CONNECT BY LEVEL <= REGEXP_COUNT (pat, '([0-9]+\b?){1,}'))
WHERE GSM LIKE '%30%' AND LENGTH(GSM) = 9REXTESTER DEMO
https://stackoverflow.com/questions/48681038
复制相似问题