我已经形成了这个正则表达式来获取模式之前的数字'?haid'
Select regexp_substr(regexp_substr('https:-2027-11217432?haid=4052118&uperty1','-[[:digit:]]+\\?haid'),'[[:digit:]]+')
output : 11217432
只是想检查是否有更好的方式来编写它而不使用2个正则表达式或任何其他函数。
答案 0 :(得分:0)
一种方法是使用regexp_replace
删除所有内容,除了我们需要保留的内容:
select regexp_replace('https:-2027-11217432?haid=4052118&uperty1', '.*[^\d](\d+)\?haid.*', '\1')
答案 1 :(得分:0)
您可以使用 SUBSTRING
SELECT SUBSTRING('https:-2027-11217432?haid=4052118&uperty1' FROM '.*-(\d+)\?haid.*')
或REGEXP_REPLACE
SELECT REGEXP_REPLACE('https:-2027-11217432?haid=4052118&uperty1', '.*-(\d+)\?haid.*', '\1')