伙计们只是一个快速的问题。我在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%"