mySql中,查询一串字符串里有几个'abc'

mySql中,查询一串字符串里有几个’abc’

我在实习时候碰到过一个这样的需求,在表里有一串12位的字符串,全是数字0和1,如下:
000011111111
表示这个人一年中,前四个月没有缴费,后八个月缴费了。我的需求是想知道这个人一年总共缴费多少个月。
在写sql语句时,有一个巧方法,利用替换字符串,计算长度,然后相除。

select 
	'000011111111' as years,
	(length('000011111111')-length(replace('000011111111','1','')))/length('1') as 1的个数

是不是很巧,把1替换成空字符串,用原字符串的长度减去替换之后字符串的长度,然后用得的差除以替换字符串的长度,就是要的结果。

同理,假如想要计算
‘abcabcddd’ 里面有几个’abc’,也可以用上面的方法。

select 
	'abcabcddd' as1,
	(length('abcabcddd')-length(replace('abcabcddd','abc','')))/length('abc') as abc的个数

猜你喜欢

转载自blog.csdn.net/Cheny_Yang/article/details/83413591
今日推荐