mysql获得一个字符串中某一个字符出现次数的语句

发布时间:2019-10-15编辑:脚本学堂
mysql中如何获得一个字符串中某一个字符出现的次数呢?本文提供了一种实现方法,有兴趣的朋友,可以参考下。

测试用的表结构与数据:

table state

id context
...................
1 A-B-A-C
2 B-D-D-A

sql语句

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

句法解释:
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中进行整数除法的操作符,如果使用’/'将得到浮点数