如果我想从dba_source中选择一些使用某个函数的对象。 我可以像如何在使用IN子句和子查询的查询中使用多个LIKE语句?
Select * from dba_source where text like '%some_name%';
写如果我想要做同样的事情多个名称。我该怎么做?
我知道LIKE和OR的用法,但名称正在从另一个表中获得。那么,有没有办法做这样的事情:
SELECT * FROM DBA_SOURCE WHERE TEXT LIKE IN(SELECT PROCESS_NAME FROM PROCESSES);
但我也想在两端添加通配符像%
。
这是可能的。或者你可以建议任何其他方式?
我也试过
WITH pnames AS (SELECT PROCESS_NAME FROM PROCESSES)
SELECT * FROM DBA_SOURCE dbas WHERE INSTR(dbas.text,pnames.process_name,1,1)>0;
它没有工作。
加入%|| %是个好主意。但是,它需要更多时间来运行。有没有更好的办法由like
SELECT D.*
FROM DBA_SOURCE D
JOIN PROCESSES P
ON D.TEXT LIKE PROCESS_NAME || '%'
您可以将查询拆分为两个(嵌套的),其中内部查询将可能单词列表作为'select'%'||字|| '%'来自....'。这将返回可在“IN”中使用的通配符值的集合。 – FDavidov
@Gilad还有其他3个选项,包括顶级答案。 – Ben
@Ben“使用LIKE进行Oracle查询”不是一个很好的方式来提出这个问题。是吗?当问题不是非常具有说服力时,人们将如何识别它。 –