select bill_no,goods_size,max(val)
from (
select t.bill_no,t.goods_size,regexp_substr(goods_size,'[0-9]+',1,level) val
from t_waybill t
connect by bill_no=prior bill_no
and level<=regexp_count(goods_size,'[*+]')+1
and prior dbms_random.value is not null
)
group by bill_no,goods_size
having max(val)<=40;
|