我有一个字符串数组和一个带有文本类型列的表。我想列出在表中任何行的指定列中出现了多少个字符串。有没有办法通过一个查询来做到这一点?

Example;
$strings = array('test', 'sth');

Table;
id | someTextColumn
-------------------
1  | abc tests
2  | sthab
3  | teststh
4  | abcd
5  | sth

Expected result;
str  | occurences
-----------------
test | 2
sth  | 3

最佳答案

您可以使用一系列like语句来做到这一点。

这是一个例子:

select totest.str, count(t.id)
from (select 'test' as str union all
      select 'sth'
     ) totest left outer join
     t
     on t.someTextColumn like concat('%', totest.str, '%')
group by totest.str

如果您的表很大,这不会特别快。如果您的表比较大,则可能需要考虑全文索引。

关于php - 查询以列出表中出现了多少个字符串?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16759301/

10-11 05:20