【求助】找个mysql自定义函数,获得“数组”的个数。

hgwyl 2020-10-23 12:31:26
需求:想在mysql中自定义函数,作用是获取“数组”的“个数”。类似php的count(array("11","12","13"))=3这样。
用的mysql软件是navicat(好像软件不同,写的函数样式不一样……所以我没baidu到可用的)

下面贴个mysql中,获取“数组”中指定位置元素的自定义函数。(好久以前找到的……)
CREATE DEFINER=`bmmcoo`@`%` FUNCTION `func_splitString`(string_complete varchar(8000),delimiter varchar(8000),string_location int) RETURNS varchar(8000) CHARSET utf8
BEGIN
DECLARE string_splitted varchar(8000) default "";
set string_splitted = reverse(substring_index(reverse(substring_index(string_complete,delimiter,string_location)),delimiter,1));
RETURN string_splitted;
END

navicat的“新建查询”中,直接执行
select func_splitString("11,12,13,21,22,31",",",3);
//结果是"13"


各位大哥,方便的话,给个能直接复制粘贴保存的吧……
就比如执行:select func_splitlen("11,12,13,21,22,31",",");
结果可以获得:6
技术菜鸟,多见谅……
...全文
322 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2020-10-23
  • 打赏
  • 举报
回复
这样效果? e.g.
set @Str='11,12,13,21,22,31';
select LENGTH(@Str)-length(replace(@Str,',',''))+1 as 个数;
/*
个数
6
*/
hgwyl 2020-10-23
  • 打赏
  • 举报
回复
引用 1 楼 中国风 的回复:
这样效果? e.g.
set @Str='11,12,13,21,22,31';
select LENGTH(@Str)-length(replace(@Str,',',''))+1 as 个数;
/*
个数
6
*/
感谢!!! 原来原理那么简单…… 顺手把"CHAR_LENGTH()--2个字节字符时用"这种情况给改了。 代码如下
CREATE DEFINER=`bmmcoo`@`%` FUNCTION `func_splitnum`(string_complete varchar(8000),delimiter varchar(8000)) RETURNS int(11)
BEGIN

	DECLARE string_splitnum int;
	
	set string_splitnum = (length(string_complete)-length(replace(string_complete,delimiter,''))+length(delimiter))/length(delimiter);
	
	RETURN string_splitnum;

END
中国风 2020-10-23
  • 打赏
  • 举报
回复
CHAR_LENGTH()--2个字节字符时用

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧