split mysql的用法_mysql 中使用split

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

2fd2d9c1d175d11752585fa9b76aba29.gif.

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

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函数取出指定位置的内容,最后利用循环,不断的去拿.

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2009-04-10 11:37

浏览 6222

评论

3 楼

moistrot

2010-10-26

postgres牛逼!postgres是好多商业数据库的前身!

2 楼

mislay

2010-07-27

e.... 估计名字好听吧

1 楼

pig345

2010-07-15

mysql 存储过程 function 有个大问题——不支持返回游标(或数组)!另外function里面还不能使用动态SQL!这两点,基本上把正常的function功能给废了!

另外没有split函数(这更加雪上加霜,导致连用function返回长字符串传递数组这种绕弯实现都成为不可能——返回了不能用函数套函数的方式分割成数组,就不能直接写在WHERE里面,基本废了!)

我感觉MySQL始终就不是一个完整的数据库,真不明白为什么还这么流行???难道大家都是简单地把MySQL当平板文件+SQL引擎使用?

反之,几年前功能就已经堪比商业数据库的postgres在功能不断完善的同时,确远没有mysql流行!

(当年mysql3就不支持一些数据库的基本功能(事务、存储过程)、现在快到6了,号称全都支持了,不过明显功能缩水!相比另外一个免费开源数据库postgres明显是个半残)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值