mysql获取一个字符串出现的次数

表结构和模拟数据例如:


table state


idcontext


..............................


1A-B-A-C


2B-D-D-A


select id,


( char_length( context ) – char_length( replace( context, 'A', '' ) ) ) as A,


(char_length( context ) – char_length( replace( context, 'B',  '') ) ) as B,


(char_length( context ) – char_length( replace( context, 'C',  '') ) ) as C,


(char_length( context ) – char_length( replace( context, 'D',  '') ) ) as D


from state


order by ` A` desc


limit 0 , 30


句法解释:


char_length( context ),获得字符串长度


replace( context, “A”, ” )将字符串中的A替换为空


char_length( context ) – char_length( replace( context, “A”, ” ) ) 计算得到差就是被替换的字符串的个数


这里说的是,统计单个字符串,但是如果是AA-BB-CC-DD呢,我们要统计AA出现的次数还可以用char_length( context ) – char_length( replace( context, “AA”, ” ) )吗?


不能这里替换以后,得到的差是2而不是1,但是实际上’AA’字符串只出现了一次,为什么?因为AA虽然只出现了一次,但是它的长度却是2!


所以应该这么做(char_length( context ) – char_length( replace( context, “AA”, ” ) )) div 2 as A


div是mysql中进行整数除法的操作符,如果使用’/'将得到浮点数。


如果您觉得我的文章有帮助,请随意赞赏!

*发表评论

用QQ账号登录  请登录后发表评论