0

伙计们只是一个快速的问题。我在 mysql 行中有一个类似于此的字符串

'google.co.nz, stackoverflow.com, facebook.com, grubber.co.nz'


依此类推...我想搜索表中的所有行并检查“facebook.com”在所有行中出现了多少次类似于上面的行以便澄清

我的行看起来像这样

-- id -- user -- likes 
   1      bob     facebook.com, google.co.nz, grubber.co.nz, stackoverflow.com

我想检查一下 facebook.com 在整个表格中出现了多少次(在每一行中)

4

6 回答 6

5

假设每个用户只能喜欢同一个页面一次,这应该有效:

SELECT COUNT(*)
FROM table
WHERE likes REGEXP '[[:<:]]facebook.com[[:>:]]'

PS:规范化你的表格,在不久的将来你遇到这样的布局大麻烦!

于 2012-09-07T09:46:15.130 回答
1

你可以用一种懒惰的方式来做,发出一个 LIKE SQL 查询:

SELECT count(*) FROM my_table 
WHERE my_table.likes LIKE '%facebook.com%'

这真的(真的)不是 cpu 友好的。尤其是大桌子

否则,您可以使用 MySQL 全文索引功能。

您可以在本文中找到更多详细信息

于 2012-09-07T09:54:39.283 回答
0

您可以使用like运算符来匹配模式:

SELECT COUNT(id) AS occurences  WHERE likes LIKE "%facebook.com%"
于 2012-09-07T09:47:08.810 回答
0

你可以使用“LIKE”语句。它是这样的(如果你想知道哪个用户喜欢 facebook.com)

SELECT * FROM yourtable
WHERE likes LIKE '%facebook.com%'

无论如何,请考虑将喜欢存储在 1:n 表结构中,而不是作为字符串

这样,您就有一个存储所有喜欢的站点的表、一个用户表和一个存储分配的用户喜欢的表。

于 2012-09-07T09:47:30.293 回答
0

试试这个

select count(likes) from yourTable where likes like '%facebook.com%'
于 2012-09-07T09:48:07.907 回答
0

其他选项。获取变量中的行数据,然后使用函数 preg_match_all ( http://www.php.net/manual/es/function.preg-match-all.php )。

此函数返回第一个参数中传递的正则表达式的出现次数。

于 2012-09-07T09:48:20.917 回答