【MySQL基础】Mysql截取字符串split函数的实现以及使用范例

2023-05-04 20:29:34 浏览数 (3)

日前,统计数据的时候发现需要字符串分隔,MySql中并没有类似Java的split函数,但是我们可以利用length()函数、replace() 2个函数创建一个自定义的split函数,sql很简单,该函数定义也是DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging的错误解决方案之一。 split函数:

代码语言:javascript复制
CREATE FUNCTION `split`( 
inputStr varchar(1000),seperatorStr varchar(50) 
) RETURNS int(11)  
######这两行告诉MySql该函数不会修改数据(尤其对数据库权限只有自读权限的账户是非常有用的)
READS SQL DATA
DETERMINISTIC 
######
BEGIN 
#####返回替换前长度减去用''替换后的长度得到seperatorStr的个数。
return (length(inputStr) - length(replace(inputStr,seperatorStr,''))); 
END

split函数测试脚本,返回#的个数:

代码语言:javascript复制
SELECT splitTermTotal('1#2#3','#')
2

length(str)函数测试,该函数返回str的长度:

代码语言:javascript复制
SELECT LENGTH('1#2#3')
5

replace(strContent, oldStr,newStr)函数测试,用于将strContent串中的oldStr全部替换为newStr:

代码语言:javascript复制
select replace('1#2#3','#','')
123

1 人点赞