我有一个简单的查询:
select *
from My_table
where
INSTR('|' || NVL(:USER_AREA_ID, AREA_ID) || '|', '|' || AREA_ID || '|') > 0
因此,基本上,当用户选择area id 20时,结果将是select all from my_table,其中area_id等于20。的|是为了避免选择area_ids number 2和area_ids number 0。这很好但是,用户可以选择多个area_id。例如,用户如何在不选择area_id 2、0和6的情况下同时选择area_id 20和area_id 60?或者选择area_id 72、90和5,同时避免选择area_id 7、2、9、0?
谢谢你
1条答案
按热度按时间kqqjbcuj1#
找到了答案:select * from my_table WHERE AREA_ID IN(SELECT TO_NUMBER(REGEXP_SUBSTR(NVL(:USER_AREA_ID,AREA_ID),'\d +',1,LEVEL))FROM DUAL EXPERT BY REGEXP_SUBSTR(NVL(:USER_AREA_ID,AREA_ID),'\d +',1,LEVEL)NOT NULL)