Oracle提取CLOB字段指定模式字符串所有匹配项的查询问题
修正Oracle CLOB字段多匹配项提取查询
原查询的问题在于REGEXP_SUBSTR函数的第4个参数(匹配位置索引)固定写死为1,导致每行都只返回第一个匹配结果。只需要把这个参数替换为cross join生成的level值,就能依次提取第N个匹配项。
修正后的查询语句:
SELECT objectid, REGEXP_SUBSTR(DATA, 'RES_GetResData_Public_ScreenPrint[^|]+', 1, level) column1 FROM perftest.NRS_DATASOURCEDATA_A_Test CROSS JOIN TABLE( CAST(MULTISET( SELECT level FROM dual CONNECT BY level <= REGEXP_COUNT(DATA, 'RES_GetResData_Public_ScreenPrint') ) AS sys.odcinumberlist) )
说明
REGEXP_SUBSTR的第4个参数level会随着connect by生成的层级数变化,第一次取第1个匹配项,第二次取第2个,以此类推- 确保
REGEXP_COUNT的匹配模式和REGEXP_SUBSTR的一致,避免生成的行数和实际匹配数不匹配
内容的提问来源于stack exchange,提问作者As0608
相关产品推荐
相关产品推荐

