Một cách để làm điều đó là với REGEXP_REPLACE. Bạn cần xác định toàn bộ chuỗi dưới dạng mẫu regex và sau đó chỉ sử dụng phần tử bạn muốn làm replace string
. Trong ví dụ này, ColorID là mẫu thứ ba trong toàn bộ chuỗi
SELECT REGEXP_REPLACE('product=1627;color=45;size=7'
, '(.*)(color\=)([^;]+);?(.*)'
, '\3') "colorID"
FROM DUAL;
Có thể có các giải pháp regex ít rắc rối hơn, nhưng giải pháp này chắc chắn hoạt động. Đây là SQL Fiddle.