'google.co.nz, stackoverflow.com, facebook.com, grubber.co.nz'
等等...我想搜索表格中的所有行,并检查'facebook.com'在所有行中出现的次数,以便澄清< / p>
我的行看起来像这样
-- id -- user -- likes
1 bob facebook.com, google.co.nz, grubber.co.nz, stackoverflow.com
我想查看facebook.com在整个表格中显示的次数(每行)
答案 0 :(得分:5)
假设每个用户只能喜欢同一个页面一次,这应该有效:
SELECT COUNT(*)
FROM table
WHERE likes REGEXP '[[:<:]]facebook.com[[:>:]]'
PS:规范你的桌子,你将在不久的将来遇到这样的布局严重麻烦!
答案 1 :(得分:1)
您可以以懒惰的方式执行此操作,发出LIKE SQL查询:
SELECT count(*) FROM my_table
WHERE my_table.likes LIKE '%facebook.com%'
这真的(真的)不是cpu友好的。特别是大桌子
否则,您可以使用MySQL全文索引功能。
您可以在this article
中找到更多详情答案 2 :(得分:0)
您可以使用like
运算符来匹配模式:
SELECT COUNT(id) AS occurences WHERE likes LIKE "%facebook.com%"
答案 3 :(得分:0)
您可以使用“LIKE”语句。 它是这样的(如果你想知道哪个用户喜欢facebook.com)
SELECT * FROM yourtable
WHERE likes LIKE '%facebook.com%'
无论如何,请考虑将喜欢的内容存储在1:n表格结构中而不是字符串
通过这种方式,你有一个存储所有可用站点的表,一个用户表和一个存储赋值的用户喜欢的表。
答案 4 :(得分:0)
试试这个
select count(likes) from yourTable where likes like '%facebook.com%'
答案 5 :(得分:0)
其他选择。获取变量中的行数据,然后使用函数preg_match_all(http://www.php.net/manual/es/function.preg-match-all.php)。
此函数返回在第一个参数中传递的正则表达式的出现次数。