mySql中,查询一串字符串里有几个'abc'
程序员文章站
2022-01-03 10:04:21
...
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' as 列1,
(length('abcabcddd')-length(replace('abcabcddd','abc','')))/length('abc') as abc的个数