2016-04-14 55 views
0

我有一列中這種類型的數據:如何計算字符串中的某個位置的特定字符的出現 - 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

回答

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

+0

你知道...我認爲,去上班!你是個天才! :D非常感謝! – Nicoale

相關問題