Oracle类似于sql的多个条件,具有从其他表中选择的功能



我在表"temp"中有375个拨号代码:

917277
917278
918083
...
9172738

我可以做以下事情:

select * from cdr where 
dnis like 917277% or
dnis like 917278% or
dnis like 918083% or
...
dnis like 9172738%

是否可以进行包含"select in"one_answers"like%"条件的查询?

select * from cdr where dnis in (select dialcode% from temp)

一种方法是使用exists:

select c.*
from cdr c
where exists (select 1 from temp t where c.dnis like dialcode || '%' );

请注意,这不需要distinct,即使可能存在多个匹配。

您可以使用JOINLIKE来实现类似的结果:

SELECT c.*           -- DISTINCT may be needed if dialcodes overlap each other
FROM cdr c
JOIN temp t
  ON c.dnis LIKE t.dialcode || '%'

最新更新