我正在使用Oracle 11g,我想使用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'和'101 30 0014A'的其他匹配项'30'并匹配9个字符的正则表达式和模式,并应返回101300014。
答案 0 :(得分:0)
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) = 9