如何计算字符串特定位置中特定字符的出现次数 - MYSQL 5.5

时间:2016-04-14 18:54:14

标签: mysql subquery mysql-5.5

我在列中有这种类型的数据:

!-------!---!-------
!-------!-----!-----
!-------!!----------
!-------!-----!-----
!-------!-----!-----

我需要计算'!'的出现次数 - 在字符串的每个位置。

对于位置1 - 我应该得到5, 位置2 - 0 位置3 - 0 位置4 - 0 位置5 - 0 位置6 - 0 位置7 - 0 位置8 - 0 位置9 - 5 等等。有20个职位。我想忽略' - '。

我试过使用locate:

select 
        `color` AS `color`,
        locate('!',
                `Info`) AS `Position`,
        count(`Info`) AS `Count`
    from
        `CountReport`
    where
        (locate('!',
                `Info`) = 1)
    group by `color` 

但如果'!'每次不计算角色的其他实例时,它会显示在第一个位置。我有一个每个职位的脚本。

对此的任何帮助将不胜感激。非常感谢提前!

- H

1 个答案:

答案 0 :(得分:1)

我不确定这是否是最有效的方法:

select count(case substring(s,1,1) when '!' then 1 else NULL end) as pos1,
       ...
       count(case substring(s,10,1) when '!' then 1 else NULL end) as pos10,
       ...
       count(case substring(s,20,1) when '!' then 1 else NULL end) as pos20
from test;

SQLFiddle