mysql有split函数么_mysql中split函数

在mysql中并没有split函数,需要自己写: 1)获得按指定字符分割的字符串的个数: Sql代码 DELIMITER$$ DROP FUNCTION IFEXISTS`sims`.`func_get_split_string_total`$$ CREATE DEFINER=`root`@`localhost` FUNCTION `func_get_split_string_total`( f_strin

在mysql中并没有split函数,需要自己写:

1)获得按指定字符分割的字符串的个数:

Sql代码

test.jsp?url=http%3A%2F%2Fzy116494718.iteye.com%2Fimages%2Ficon_star.png&refer=http%3A%2F%2Fblog.csdn.net%2Fliuxiao723846%2Farticle%2Fdetails%2F27535049

DELIMITER $$

DROP FUNCTION IF EXISTS `sims`.`func_get_split_string_total`$$

CREATE DEFINER=`root`@`localhost` FUNCTION `func_get_split_string_total`(

f_string varchar(1000),f_delimiter varchar(5)

) RETURNS int(11)

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$$

DELIMITER ;

例:func_get_split_string_total('abc||def||gh','||') 结果为3

2)得到第i个分割后的字符串。

Sql代码

test.jsp?url=http%3A%2F%2Fzy116494718.iteye.com%2Fimages%2Ficon_star.png&refer=http%3A%2F%2Fblog.csdn.net%2Fliuxiao723846%2Farticle%2Fdetails%2F27535049

DELIMITER $$

DROP FUNCTION IF EXISTS `sims`.`func_get_split_string`$$

CREATE DEFINER=`root`@`localhost` FUNCTION `func_get_split_string`(

f_string varchar(1000),f_delimiter varchar(5),f_order int) RETURNS varchar(255) CHARSET utf8

BEGIN

declare result varchar(255) default '';

set result = reverse(substring_index(reverse(substring_index(f_string,f_delimiter,f_order)),f_delimiter,1));

return result;

END$$

DELIMITER ;

例如:func_get_split_string('abc||def||gh','||',2) 为def

3) 需求:A表中的一个字段值为1||2, 在select 时要通过和B字典表的关联得到a,b

Sql代码

test.jsp?url=http%3A%2F%2Fzy116494718.iteye.com%2Fimages%2Ficon_star.png&refer=http%3A%2F%2Fblog.csdn.net%2Fliuxiao723846%2Farticle%2Fdetails%2F27535049

CREATE DEFINER=`root`@`localhost` FUNCTION `getDictName`(v_str varchar(100)) RETURNS varchar(100) CHARSET utf8

BEGIN

DECLARE i int(4);

DECLARE dictCode varchar(100);

DECLARE dictName varchar(100);

DECLARE returnStr varchar(100);

set i = 1;

set returnStr = '';

if(v_str is null or length(v_str)=0) then

return returnStr;

else

while i<=func_get_split_string_total(v_str,'||')

do

set dictCode = func_get_split_string(v_str,'||',i);

select names into dictName from sims_dd_dict where code = dictCode;

set returnStr = concat(returnStr,',',dictName); -- 这里要用中文的逗号,否则导出EXCEL的时候会串行,因为程序中是以逗号分隔的

set i = i+1;

end while;

set returnStr = subString(returnStr,2);

return returnStr;

end if;

END$$

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值