В наборе данных есть символьная переменная, которая читается как «2-6» или «4-7». Что меня интересует в выборе тех наблюдений, где числа 3,4,5 могут быть в этом спектре «4-7», то достаточно просто использовать выражение
where 3 between TO_NUMBER(REGEXP_SUBSTR(MEAS_VALUE,'\d+',1,1)) and TO_NUMBER(substr(REGEXP_SUBSTR(MEAS_VALUE,'(-)\d+',1,1),2)) or
4 between TO_NUMBER(REGEXP_SUBSTR(MEAS_VALUE,'\d+',1,1)) and TO_NUMBER(substr(REGEXP_SUBSTR(MEAS_VALUE,'(-)\d+',1,1),2)) or
5 between TO_NUMBER(REGEXP_SUBSTR(MEAS_VALUE,'\d+',1,1)) and TO_NUMBER(substr(REGEXP_SUBSTR(MEAS_VALUE,'(-)\d+',1,1),2))
Просто посмотрите, есть ли более .. красноречивое решение для группировки этого диапазона в данных функционального теста ниже
TIA-
with test (id, MEAS_VALUE) as (
select 1,'2-5' from dual union all --want this
select 2,'1-2' from dual union all --do not want this
select 3,'5-7' from dual) ----want this
select * from test
where 3 between TO_NUMBER(REGEXP_SUBSTR(MEAS_VALUE,'\d+',1,1)) and TO_NUMBER(substr(REGEXP_SUBSTR(MEAS_VALUE,'(-)\d+',1,1),2))
or 4 between TO_NUMBER(REGEXP_SUBSTR(MEAS_VALUE,'\d+',1,1)) and TO_NUMBER(substr(REGEXP_SUBSTR(MEAS_VALUE,'(-)\d+',1,1),2)) or
5 between TO_NUMBER(REGEXP_SUBSTR(MEAS_VALUE,'\d+',1,1)) and TO_NUMBER(substr(REGEXP_SUBSTR(MEAS_VALUE,'(-)\d+',1,1),2));