Как-то так работает.Вероятно, может быть сделано более элегантно.
select regexp_substr(regexp_substr('articleNumber=370878&variantNumber=&bundleNumber=3&supplierNumber=20064&discountType=13'
,'(.*?)(&|$)'
,1
,1
,null
,1)
,'(.*?)(=|$)'
,2
,2
,null
,1) as articlenumber
,regexp_substr(regexp_substr('articleNumber=370878&variantNumber=&bundleNumber=3&supplierNumber=20064&discountType=13'
,'(.*?)(&|$)'
,2
,2
,null
,1)
,'(.*?)(=|$)'
,2
,2
,null
,1) as variantnumber
,regexp_substr(regexp_substr('articleNumber=370878&variantNumber=&bundleNumber=3&supplierNumber=20064&discountType=13'
,'(.*?)(&|$)'
,3
,3
,null
,1)
,'(.*?)(=|$)'
,2
,2
,null
,1) as bundlenumber
,regexp_substr(regexp_substr('articleNumber=370878&variantNumber=&bundleNumber=3&supplierNumber=20064&discountType=13'
,'(.*?)(&|$)'
,4
,4
,null
,1)
,'(.*?)(=|$)'
,2
,2
,null
,1) as suppliernumber
,regexp_substr(regexp_substr('articleNumber=370878&variantNumber=&bundleNumber=3&supplierNumber=20064&discountType=13'
,'(.*?)(&|$)'
,5
,5
,null
,1)
,'(.*?)(=|$)'
,2
,2
,null
,1) as discounttype
from dual