使用'LIKE'运算符和返回多个结果的子查询

use*_*135 2 oracle subquery sql-like

新手到SQL.请帮助.

对于多种模式,我需要计算其中一个字段中具有模式的记录数.我知道如何为一个模式执行此操作,但是当子查询中存在多个模式时,如何获取每个模式的计数.我正在使用Oracle.我将尝试用一个例子来解释.

SELECT count(*) FROM TableA
WHERE 
TableA.comment LIKE '%world%';
Run Code Online (Sandbox Code Playgroud)

现在,此代码将返回TableA.comment字段中任何位置具有"world"的记录数.我的情况是,我有一个第二个查询,它返回了一个像'world'这样的模式列表.我如何获得每个模式的计数?

我的最终结果应该是2列,第一列模式,第二列count_of_pattern.

Gor*_*off 8

您可以使用like将子查询加入表:

SELECT p.pattern, count(a.comment)
FROM (subquery here that returns "pattern"
     ) p left outer join
     TableA a
     on a.comment like '%'||p.pattern||'%'
group by p.pattern;
Run Code Online (Sandbox Code Playgroud)

这假设pattern没有通配符.如果是,那么您不需要进行连接.

这也使用了一个left outer join,即使没有匹配也会返回所有模式.