MySQL中实现分割字符串的方法

比如现在有一字符串:1,2,44,5,666,29232
要把它按照逗号分割成:
1
2
44
5
666
29232
而且还要求它的总数。这个我以前写过。不过今天规范一下。

1、具体函数

SQL code
 
   

DELIMITER $$

CREATE DEFINER = `root`@` % ` FUNCTION `func_get_split_string_total`(
f_string
varchar ( 1000 ),f_delimiter varchar ( 5 )
)
RETURNS int ( 11 )
BEGIN
 
   
-- Get the total number of given string.
return 1 + (length(f_string) - length( replace (f_string,f_delimiter, '' )));
END $$

DELIMITER ;


SQL code
 
   

DELIMITER $$


CREATE DEFINER = `root`@` % ` FUNCTION `func_get_split_string`(
f_string
varchar ( 1000 ),f_delimiter varchar ( 5 ),f_order int ) RETURNS varchar ( 255 ) CHARSET utf8
BEGIN
 
   
-- Get the separated number of given string.
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 ;
测试的存储过程:
DELIMITER $$

CREATE PROCEDURE `sp_print_result`(
 IN f_string varchar(1000),IN f_delimiter varchar(5)
)
BEGIN
  -- Get the separated string.
  declare cnt int default 0;
  declare i int default 0;
  set cnt = func_get_split_string_total(f_string,f_delimiter);
  drop table if exists tmp_print;
  create temporary table tmp_print (num int not null);
  while i < cnt
  do
    set i = i + 1;
    insert into tmp_print(num) values (func_get_split_string(f_string,f_delimiter,i));
  end while;
  select * from tmp_print;
  
END$$

DELIMITER ;

2、来做一下测试
   mysql> call sp_print_result('1,2,44,5,666,29232',',');
+-------+
| num   |
+-------+
|     1 |
|     2 |
|    44 |
|     5 |
|   666 |
| 29232 |
+-------+
6 rows in set (0.01 sec)

Query OK, 0 rows affected (0.01 sec)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值