mysql 中使用split

      在mysql中好像并没有提供split的函数,即使有那么该如何接收返回值呢?数组吗.

      反正我只能间接的实现,如下:

DELIMITER $$;

DROP FUNCTION IF EXISTS `func_getSplitCount`$$

CREATE FUNCTION `func_getSplitCount`(
	f_string varchar(1000),f_delimit varchar(5)
) RETURNS int(11)
BEGIN
	return 1+(length(f_string) - length(replace(f_string,f_delimit,'')));
END$$

DELIMITER ;$$

 

DELIMITER $$;

DROP FUNCTION IF EXISTS `func_getSplitString`$$

CREATE FUNCTION `func_getSplitString`(
	f_string varchar(1000),f_delimit varchar(5),f_order int
) RETURNS varchar(255)
BEGIN
  declare result varchar(255) default '';
  set result = reverse(substring_index(reverse(substring_index(f_string,f_delimit,f_order)),f_delimit,1));
  return result;
END$$

DELIMITER ;$$

 

-- 以下是利用这个split的一个片段

....
set loopCount = func_getSplitCount(orString,splitDelimit);
	
WHILE(loopCount > 0) DO
	set temp_orWhere = concat(temp_orWhere,' or cIdxMapCd = \'',func_getSplitString(orString,splitDelimit,loopCount),'\'');
	set loopCount = loopCount - 1;
END WHILE;



....

 恩就是这样,至少我没有更好的办法.
 利用length函数和replace计算出split的个数,然后利用substring_index和reverse函数取出指定位置的内容,最后利用循环,不断的去拿.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值