SQL 查询某个字段某个字符串内容出现次数实现

目录

1、使用场景

2、实现SQL

3、成果展现

4、总结

5、参考文章


1、使用场景

        因为接触的项目前期其他人员设计时候存储视频之中包含有多段,最近需要转换为视频点播时候,需要拆分原来多段视频为单段,为了验证拆分后是否正确。需要书写一个SQL语句验证拆分后的视频数量是否正确。于是就有查询某个字符串在一个字段之中出现的次数要求,以及可以统计某个词语在文章之中包含的次数等相关业务需求。

2、实现SQL

        因为实际项目原来存储的视频多段的格式如下所示的JsonArray字符串:

[{"resource_url":"https://AAAA.mp4","resource_name":"06第二节 无差异曲线分析 (1)"},

{"resource_url":"https://BBB.mp4","resource_name":"07第二节 无差异曲线分析 (2)"},

{"resource_url":"https://CCC.mp4","resource_name":"08第二节 无差异曲线分析 (3)"}]

      于是需要统计包含有字符串 出现的次数;就能够统计出所有的视频个数总数。

    于是有如下SQL语句如下所示:

扫描二维码关注公众号,回复: 13465533 查看本文章
SELECT 
 sum(a.videoTotal) videoTotal,
 a.course_id
 -- a.*
 FROM (
SELECT
	-- COUNT(t.id) total,
 t.id,
	FLOOR(((char_length(t.resource) - char_length(REPLACE (t.resource, '}', ''))))/1) as videoTotal,
	t.resource_url,
	t.resource,
	t.course_id
FROM
	l_courseware t
WHERE
	t.delete_time = 0
	AND t.type IN (2,3)
	AND t.content_type = 1
	AND t.resource != '[]'
	-- and t.course_id in (62)
	) a  -- where a.videoTotal>1	
GROUP BY a.course_id

3、成果展现

-- 此方法除法获得的一个浮点数需要取整
SELECT FLOOR((char_length('A-B-A-C')-char_length(replace('A-B-A-C', "A",'')))/1) as ATotal FROM DUAL;

-- 可以使用如下所示的除法函数 div

SELECT (char_length('A-B-A-C')-char_length(replace('A-B-A-C', "A",''))) div 1 as ATotal FROM DUAL;

4、总结

        通过使用此种方法,能够获得某个字段某个字符的出现次数,对于文本的统计以及一些特殊情况的处理能够很好的实现。

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

5、参考文章

        mysql查找字符出现的次数

猜你喜欢

转载自blog.csdn.net/jianxia801/article/details/120762051