1、自定义split函数脚本
CREATE DEFINER = `root`@`%` FUNCTION `tjdemo`.`fun_get_split_string_total`(f_string varchar(1000),f_delimiter varchar(5))
RETURNS int(11)
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
declare returnInt int(11);
if length(f_delimiter)=2 then
return 1+(length(f_string) - length(replace(f_string,f_delimiter,'')))/2;
else
return 1+(length(f_string) - length(replace(f_string,f_delimiter,'')));
end if;
END
说明:
tjdemo:数据库名
fun_get_split_string_total:函数名
f_string:输入参数,被split的字符串
f_delimiter:分隔符字符串
注意:只函数的分割符这符串长度只支1到2位。
如果分隔符字符串超过2位,就要使用REPLACE函数先把被split的字符串中的分隔符字符串替换成1位或2位的分隔符字符串。
如下语句是执行不了的:
select fun_get_split_string_total('aaa#option#cc#option#ddd#option#ff','#option#') as num;
如果想实现,可以使用REPLACE,如下:
select fun_get_split_string_total(REPLACE('aaa#option#cc#option#ddd#option#ff','#option#','|'),'|') as num;