php搜索一个mysql字符串结果

时间:2012-09-07 09:44:18

标签: php mysql

伙计们只是一个简单的问题。我在mysql行中有一个类似于这个字符串的字符串

'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在整个表格中显示的次数(每行)

6 个答案:

答案 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)。

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