отметьте это:
SQL Fiddle
Настройка схемы Oracle 11g R2 :
CREATE TABLE t
("id" int, action varchar2(6))
;
INSERT ALL
INTO t ("id", action)
VALUES (1, 'REH001')
INTO t ("id", action)
VALUES (2, 'REH002')
INTO t ("id", action)
VALUES (3, 'REH003')
INTO t ("id", action)
VALUES (4, 'LOA001')
INTO t ("id", action)
VALUES (5, 'LOA002')
INTO t ("id", action)
VALUES (6, 'RFL')
SELECT * FROM dual
;
Запрос 1 :
with cte0 as
(
select trim(regexp_substr(c, '[^;]+', 1, levels.column_value)) as r from
(
select 'LOA001;RFL' c FROM DUAL
) ti,
table(cast(multiset(select level from dual
connect by level <= length (regexp_replace(c, '[^;]+')) + 1) as sys.OdciNumberList)) levels
)
select * from cte0
inner join t on substr(action, 1,length(r)) = r
Результаты :
| R | id | ACTION |
|--------|----|--------|
| LOA001 | 4 | LOA001 |
| RFL | 6 | RFL |