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


How to find number of occurences of string in comma separated values field

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

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

我想要一个不同的东西:

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

这篇博客文章似乎做了你想做的事:

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

基本上,它查看字段的字符串长度,删除目标子字符串,然后查看新的长度。如果你知道你的子字符串有4个字符长,而你的新字符串现在比以前短了8个字符,那么你就知道你出现了2次。

LOCATE应该做到这一点。请注意,有两个不同的签名-第一个(两个参数)将首先调用,然后调用第二个(三个参数),给出第一个的结果,作为第二个的第三个参数。更多信息,请访问:

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

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

第一个语法返回substring字符串str中的substr。第二个语法返回位置字符串str中第一次出现的子字符串substr的,起始于position pos.如果子字符串不在str.中,则返回0