oracle里有没有能实现like in的功能,如: select * from table1 where field1 like in (select '%' ¦ ¦field1 ¦ ¦'%' from table2)
已知的可以用 || 实现,如 select * from table1 where field1 like ('%' ¦ ¦field1 ¦ ¦'%') or field1 like ('%' ¦ ¦field2 ¦ ¦'%') 但table2表里的数据有很多,这样做拼出的sql太吓人,而且效率也很低 请问有没有好的办法?
已知的可以用 || 实现,如 select * from table1 where field1 like ('%' ¦ ¦field1 ¦ ¦'%') or field1 like ('%' ¦ ¦field2 ¦ ¦'%') 但table2表里的数据有很多,这样做拼出的sql太吓人,而且效率也很低 请问有没有好的办法?
select * from table1 t where exists(
select * from table2 where t.field1 like '%'||field1||'%')
如果能根据你具体的要求,改写成 field1||'%' ,在field1上建立索引就可以用到索引。