如何在逗号分隔值字段中查找字符串出现次数

时间:2012-01-10 16:57:18

标签: php mysql

我有一个包含逗号分隔值的字段。 我发现我可以使用以下代码验证“b”列表中的状态:

SELECT FIND_IN_SET('b','a,b,c,d,b,b')

我想要一个不同的东西:

我想在逗号分隔列表中找到'b'的出现次数。这在MySQL中可行吗?或者我必须在PHP中array_count_values要求它?

2 个答案:

答案 0 :(得分:1)

这篇博文似乎可以满足您的需求:

http://nostylesheets.com/2009/07/17/mysql-substr-count/

基本上,它会查看字段的字符串长度,删除目标子字符串,然后查看新的长度。如果您知道您的子字符串长度为4个字符,并且您的新字符串现在比其短8个字符,那么您知道您有2次出现。

答案 1 :(得分:0)

LOCATE应该可以解决问题。请注意,有两个不同的签名 - 第一个(两个args)最初被调用,然后调用第二个(三个args),给出第一个的结果,作为第二个的第三个参数。更多信息:

  

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_locate

     

LOCATE(substr,str),LOCATE(substr,str,pos)

     

第一个语法返回第一次出现的位置   string str中的substring substr。第二种语法返回位置   字符串str中第一次出现substring substr,从   位置pos。如果substr不在str中,则返回0。