SQL Oracle PL/SQL 中的列表在哪里?

SQL where in with lists in Oracle PL/SQL?

我有以下 "table1" :

NAME     JOB    

Mary     pilot, astronaut, cook
John     astronaut, biker
Michael  rider
Rita     teacher, doctor

我想 select 所有宇航员或医生。它应该 return 玛丽、约翰和丽塔。

我目前有:

select name from table1 
where 'astronaut,doctor' in (select regexp_substr(table1.job,'[^'',]+', 1, level) 
     from dual
     connect by regexp_substr(table1.job, '[^'',]+', 1, level) is not null)

但是,我不想比较左侧的整个字符串,而是想遍历它。

注意:我将左侧参数作为输入参数,因此必须在 sql.

中对其进行解析

您应该修正数据格式。您正试图将列表存储在一列中,这是一个坏主意。您应该使用联结 table 而不是定界值。

有时,我们会被其他人糟糕的设计决定所困。 Oracle 确实有强大的正则表达式运算符。这确实允许:

select name, job
from table1
where regexp_like(job, replace('astronaut,doctor', ',', '|');