找到mysql中出现的次数

时间:2015-03-17 10:58:21

标签: mysql

我有一个字符串,例如'p2p3p4p9c5c6c7'我想在mysql中创建一个select语句,它返回初始字符串中包含的字符串('p6','p7','p8' or 'p9')中有多少。 我的例子的结果应该是1,因为只有' p9'包含在我的字符串中。 我找不到一个很好的方法来做到这一点。有人可以帮忙吗?

另一个例子 'k2p4p6p8p9c8'结果应该在这里3

2 个答案:

答案 0 :(得分:2)

您的数据格式似乎很差。如果要存储事物列表,请使用联结表。

然而,我能想到的最佳答案是一组加在一起的条件:

select ((str like '%p6%') +
        (str like '%p7%') +
        (str like '%p8%') +
        (str like '%p9%')
       ) as NumInString

MySQL将布尔值视为数字上下文中的整数,其中“1”表示true,“0”表示false。

我应该重复一遍,如果子串实际上是某种类型的代码,那么这些应该存储在一个单独的连接表中,每个代码和原始行有一行。

答案 1 :(得分:1)

SELECT count(*) FROM
(SELECT 'p2p3p4p9c5c6c7' AS a) AS string_table 
INNER JOIN
(SELECT 'p6' AS b UNION ALL
SELECT 'p7' UNION ALL
SELECT 'p8' UNION ALL
SELECT 'p9') AS list_table
ON INSTR(string_table.a,list_table.b) > 0;