mysql从具有精确子字符串的字符串中选择记录计数

时间:2014-03-14 07:17:16

标签: mysql select substring sql-like

我有五条记录,如下所示。我需要获取具有“摇滚”的数据。所以我需要像这样的输出,输出应该显示'摇滚'的计数,所以根据上面的数据库,输出计数应该是“3”,即,rec 1,rec 3& rec 5“。所以计数不应该是”rec 2& rec 4“。

rec1: [u'armenian rock', u' armenian', u' singer-songwriter', u' rock'] 
rec2: [u'punk', u' armenian rock', u' new wave', u' italian']
rec3: [u'rock']
rec4: [u'japanese', u' okuda tamio related', u" rock'n'roll", u' roots rock']
rec5: [u'test rock', u' armenian', u' singer-songwriter', u" rock"]

4 个答案:

答案 0 :(得分:0)

尝试字符串函数

INSTR(str,substr)

在您的查询中。

这样的事情:

SELECT COUNT(*) FROM yourTable WHERE INSTR(yourTable.tags, 'rock') > 0;

另一种选择可能是

的使用
LOCATE(substr,str), LOCATE(substr,str,pos)

请查看mysql文档:

http://dev.mysql.com/doc/refman/5.1/en/string-functions.html

答案 1 :(得分:0)

SELECT (LENGTH(tags) - LENGTH(REPLACE(tags, 'rock', ''))) / LENGTH('rock') AS count FROM your_table

试试这个。是的,看起来很臃肿,但据我所知,没有任何其他可能的解决方案。

答案 2 :(得分:0)

SELECT SUM((LENGTH(tags) - LENGTH(REPLACE(tags, 'u\' rock', ''))) / LENGTH('u\' rock'))as counting 
FROM tableName

FIDDLE

答案 3 :(得分:0)

您可以使用:

SELECT COUNT(*) FROM Table1 WHERE INSTR(Table1.tags, '\' rock') > 0;

fiddle