mysql手撸split函数

mysql没有split函数, 网上提供的那个函数看上去就不好理解。substring_index 套2次。 看的晕头转向。
后来索性自己手撸一个。

CREATE DEFINER=`root`@`%` FUNCTION `splitStr`(orgstr VARCHAR(1000), spch VARCHAR(5), num int) RETURNS varchar(1000) CHARSET utf8
BEGIN      
    DECLARE i INT DEFAULT 1;   -- 指针索引
		DECLARE s INT DEFAULT 1;   -- 当前开始位
		DECLARE n INT DEFAULT 0;   -- 当前第几个
		DECLARE len INT DEFAULT 0;   -- 当前第几个
    SET len =  LENGTH(orgstr); 
		-- return orgstr;
    WHILE i <= len    
    DO     
				if substr(orgstr,i,1) = spch then -- 查看当前值是否与 分隔符相同
						set n = n+1; 
						if n = num or i = len then
						    -- return CONCAT_WS(" ", s , i-1,n);
							   return substr(orgstr,s,i-s); 
						end if;
						
						set s = i+1;
				end if ; 
				
				SET i = i + 1;  
    END WHILE; 
		return substr(orgstr,s,i-s); 
END

用法

 select 
 -- build_name,unit_name, household_name,
  splitStr(address, '-', 1), -- 3
  splitStr(address, '-', 2) , -- 2
  splitStr(address, '-', 3) ,-- 505
 address  --  3-2-505
 from `user` where  address like '%-%-%'  limit 2 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值