php搜索一个mysql字符串结果


php search a mysql string results

伙计们只是一个快速的问题。我在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在整张表中(每行)出现了多少次

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

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

PS:规范化你的表,你在不久的将来会遇到这样的布局的严重问题!

您可以以一种懒惰的方式执行,发出一个LIKE SQL查询:

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

这真的(真的)对cpu不友好。特别是大桌子

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

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

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

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

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

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

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

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

试试这个

select count(likes) from yourTable where likes like '%facebook.com%'

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

SELECT COUNT(id) AS occurences  WHERE likes LIKE "%facebook.com%"