在MYSQL中的逗号分隔列中获取相似值的计数

时间:2016-09-12 11:53:52

标签: mysql

您好我想在mysql列中获取类似值的计数,例如,我必须从 计算' 10' product_id(' 9,10,9,10,9,10') ,其结果应该是 &#39 ; 3' 使用MySQL。有没有办法做到这一点

2 个答案:

答案 0 :(得分:2)

@JaydipJ有正确的想法,但更安全的方法是:

SET @str = '9,10,9,10,9,10';
SET @tofind = '10'

SELECT (LENGTH(CONCAT(',', @str, ',') - 
        LENGTH(REPLACE(CONCAT(',', @str, ','),
                       CONCAT(',', @tofind, ','
                            ), ''
                      )
              )
       ) / LENGTH(@tofind)

如果字符串包含101或101010,则应返回正确的结果。

如评论中所述。将SQL中的列表存储在逗号分隔的列表中是一个坏主意。这种字符串操作通常以更合适的语言完成。

答案 1 :(得分:1)

假设该列的值为'9,10,9,10,9,10'且搜索字符串为两位数,那么您可以找到这样的事件

SELECT (LENGTH('9,10,9,10,9,10') - LENGTH(REPLACE('9,10,9,10,9,10','10','')) ) / LENGTH('10')
相关问题