一个简单的判断子串个数的函数

简介:
MySQL本身没有判断子串个数的函数。
所以我写了一个,以备参考。
函数体如下:

DELIMITER $$

DROP FUNCTION IF EXISTS `test`.`func_get_string_count`$$

CREATE FUNCTION `test`.`func_get_string_count`(
 f_str varchar(8000), f_substr varchar(255))
RETURNS int
BEGIN
  -- Created by david yeung 20080226.
  declare total int default 0;
  declare remain_str varchar(8000) default '';
  set remain_str = f_str;
  while instr(remain_str,f_substr) > 0
  do
    set total = total + 1;
    set remain_str = substring(remain_str,instr(remain_str,f_substr) + char_length(f_substr));
  end while;
  return total;
END$$

DELIMITER 
;

调用结果:
select func_get_string_count('I love you love,""&&&& I love, I hate, love love love','love') as substr_count;

query result(1 records)

substr_count
6



不过你可以完全用系统提供的函数来组合。
看看例子:


set @str = 'I love you love,""&&&& I love, I hate, love love love';
set @sub_str = 'love';
select ceiling((char_length(@str) - char_length(replace(@str,@sub_str,'')))/char_length(@sub_str)) as substr_count;

结果:

query result(1 records)

substr_count
6





本文转自 yarin 51CTO博客,原文链接:http://blog.51cto.com/yueliangdao0608/81265,如需转载请自行联系原作者

相关文章
|
存储 安全 Linux
Docker 离线安装与基本使用
Docker 离线安装与基本使用
3911 0
Docker 离线安装与基本使用
|
数据采集 监控 物联网
IOT/智能设备日志解决方案(1):概述
无论是物联网还是智能设备,规模都越来越大,产业分工也越来越明确,逐渐形成一整套的生态系统。而同时无论是物联网还是智能设备的生态系统中,日志数据永远是不可缺少的一个重要环节。
6344 0
IOT/智能设备日志解决方案(1):概述
|
算法 5G 数据安全/隐私保护
3D-MIMO信道模型的MATLAB模拟与仿真
该研究利用MATLAB 2022a进行了3D-MIMO技术的仿真,结果显示了不同场景下的LOS概率曲线。3D-MIMO作为5G关键技术之一,通过三维天线阵列增强了系统容量和覆盖范围。其信道模型涵盖UMa、UMi、RMa等场景,并分析了LOS/NLOS传播条件下的路径损耗、多径效应及空间相关性。仿真代码展示了三种典型场景下的LOS概率分布。
791 1
|
设计模式 算法 网络协议
15.模版模式设计思想
模版模式是一种行为设计模式,它定义了一个操作中的算法骨架,而将一些步骤延迟到子类中实现。这种方式让子类可以在不改变算法结构的情况下重新定义算法的某些特定步骤。文章详细介绍了模版模式的基础概念、应用场景、实现原理及优缺点,并通过具体案例深入解析了模版模式的使用方法。适合初学者和有一定经验的开发者深入学习。
240 4
|
图形学 C# 开发者
全面掌握Unity游戏开发核心技术:C#脚本编程从入门到精通——详解生命周期方法、事件处理与面向对象设计,助你打造高效稳定的互动娱乐体验
【8月更文挑战第31天】Unity 是一款强大的游戏开发平台,支持多种编程语言,其中 C# 最为常用。本文介绍 C# 在 Unity 中的应用,涵盖脚本生命周期、常用函数、事件处理及面向对象编程等核心概念。通过具体示例,展示如何编写有效的 C# 脚本,包括 Start、Update 和 LateUpdate 等生命周期方法,以及碰撞检测和类继承等高级技巧,帮助开发者掌握 Unity 脚本编程基础,提升游戏开发效率。
864 0
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的疫苗预约系统附带文章和源代码设计说明文档ppt
基于ssm+vue.js+uniapp小程序的疫苗预约系统附带文章和源代码设计说明文档ppt
189 0
|
存储 C语言
C语言自定义类型_枚举&联合(3)
C语言自定义类型_枚举&联合(3)
201 1
|
Kubernetes 监控 JavaScript
重磅开源,Kubernetes 监控利器来了!
重磅开源,Kubernetes 监控利器来了!
|
自然语言处理 Python
Python运算符列表及其优先顺序、结合性
本文表格对Python中运算符的优先顺序进行了总结,从最高优先级(最先绑定)到最低优先级(最后绑定)。相同单元格内的运算符具有相同优先级。除非句法显式地给出,否则运算符均指二元运算。
704 0
|
Shell Python
Python(二十一)python集合set
集合(set)是一个无序的不重复元素序列。 可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。 集合是没有value的字典 一:创建集合 1:创建一个集合 ini 复制代码 # 创建集合 set_one = {1, 2, '33', 4, 5} print(set_one) 输出: {'33', 1, 2, 4, 5} 2:创建一个空集合 scss 复制代码 # 创建一个空集合 set_kong = set() print(set_kong) print(type(set_kong))
198 0

热门文章

最新文章

下一篇
开通oss服务