在Oracle中检索行字符串的唯一值



我在URL列中得到结果,如下所示

tracking=http://test-trk-801v.pii-dmz.ext:8080/95078&analysis=http://test-trk-801v.pii-dmz.ext:8080/95078-analysis/index.jsp
tracking=http://localtest-mi-track16.localperc.cloud:11080/232819&analysis=http://localtest-mi-anlys19.localperc.cloud:9080/232819-analysis/index.jsp
tracking=http://test-trk-002.pii-dmz.ext:10088/77971
tracking=http://test-trk-003.pii-dmz.ext:14080/92542
tracking=http://localtest-mi-track04.localperc.cloud:15080/203396&dentalanalysis=http://localtest-mi-anlys12.localperc.cloud:8080/203396-analysis-dental/index.jsp&analysis=http://localtest-mi-anlys03.localperc.cloud:12080/203396-analysis/index.jsp
tracking=http://localtest-mi-track03.localperc.cloud:14080/202161&bonescananalysis=http://localtest-mi-anlys03.localperc.cloud:10088/202161-analysis-bonescan/index.jsp&analysis=http://localtest-mi-anlys03.localperc.cloud:10088/202161-analysis/index.jsp
tracking=http://test-trk-002.pii-dmz.ext:10088/7732
tracking=http://test-trk-003.pii-dmz.ext:14080/92902
tracking=http://localtest-mi-track16.localperc.cloud:11080/236978&analysis=http://localtest-mi-anlys19.localperc.cloud:9080/236978-analysis/index.jsp

这个模式有太多的结果,我想从第一部分检索唯一的trk-track值,就像从tracking=http://test-trk-801v.pii-dmz.ext:8080检索值trk-801v一样,从tracking=http://localtest-mi-track16.localperc.cloud:11080检索值track16

就像我有trk-801v,trk-002,trk-003唯一,同样track16, track04唯一。

您可以使用REGEXP_SUBSTR:

select distinct regexp_substr(my_column, 'trk-d+w+|trackd+') from my_table

这个查询将从您的列中提取第一个匹配regextrk-d+w+|trackd+的子字符串,并返回它。如果没有匹配,它将返回NULL

Demo可以在这里看到。

最新更新