我有一个包含逗号分隔值的字段。 我发现我可以使用以下代码验证“b”列表中的状态:
SELECT FIND_IN_SET('b','a,b,c,d,b,b')
我想要一个不同的东西:
我想在逗号分隔列表中找到'b'的出现次数。这在MySQL中可行吗?或者我必须在PHP中array_count_values
要求它?
答案 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。