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

时间:2013-08-05 01:55:06

标签: oracle subquery sql-like

新手到SQL。请帮助。

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

SELECT count(*) FROM TableA
WHERE 
TableA.comment LIKE '%world%';

现在,此代码将返回TableA.comment字段中任何位置具有“world”的记录数。我的情况是,我有第二个查询返回了一个类似'world'的模式列表。我如何得到每个模式的计数?

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

1 个答案:

答案 0 :(得分: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;

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

这也使用left outer join,以便即使没有匹配也会返回所有模式。

相关问题