如何计算特定字符在字符串特定位置的出现次数 - MYSQL 5.5
How to Count occurrence of a specific character in a specific position of string - MYSQL 5.5
我在一列中有这种类型的数据:
!-------!---!-------
!-------!-----!-----
!-------!!----------
!-------!-----!-----
!-------!-----!-----
我需要计算“!”的出现次数- 在字符串的每个位置。
对于位置 1 - 我应该得到 5,
位置 2 - 0
位置 3 - 0
位置 4 - 0
位置 5 - 0
位置 6 - 0
位置 7 - 0
位置 8 - 0
位置 9 - 5
等等等等。有20个位置。我想忽略“-”。
我试过使用定位:
select
`color` AS `color`,
locate('!',
`Info`) AS `Position`,
count(`Info`) AS `Count`
from
`CountReport`
where
(locate('!',
`Info`) = 1)
group by `color`
但是如果 '!'每次不计算角色的其他实例时,它都会出现在第一个位置。我有每个职位的脚本。
如有任何帮助,我们将不胜感激。提前致谢!
~h
我不确定这是否是最有效的方法:
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;
我在一列中有这种类型的数据:
!-------!---!-------
!-------!-----!-----
!-------!!----------
!-------!-----!-----
!-------!-----!-----
我需要计算“!”的出现次数- 在字符串的每个位置。
对于位置 1 - 我应该得到 5, 位置 2 - 0 位置 3 - 0 位置 4 - 0 位置 5 - 0 位置 6 - 0 位置 7 - 0 位置 8 - 0 位置 9 - 5 等等等等。有20个位置。我想忽略“-”。
我试过使用定位:
select
`color` AS `color`,
locate('!',
`Info`) AS `Position`,
count(`Info`) AS `Count`
from
`CountReport`
where
(locate('!',
`Info`) = 1)
group by `color`
但是如果 '!'每次不计算角色的其他实例时,它都会出现在第一个位置。我有每个职位的脚本。
如有任何帮助,我们将不胜感激。提前致谢!
~h
我不确定这是否是最有效的方法:
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;