博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL中实现分割字符串的方法
阅读量:6628 次
发布时间:2019-06-25

本文共 1637 字,大约阅读时间需要 5 分钟。

比如现在有一字符串: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)

本文转自 yarin 51CTO博客,原文链接:http://blog.51cto.com/yueliangdao0608/82320,如需转载请自行联系原作者

你可能感兴趣的文章
【转】C++可变参数列表处理宏va_list、va_start、va_end的使用
查看>>
跨站脚本攻击XSS
查看>>
Android Studio 中的FindBugs插件使用,轻松帮你发现Bug (转)
查看>>
linux ls 命令
查看>>
聊一聊PV和并发、以及计算web服务器的数量的方法
查看>>
Win10 IoT C#开发 4 - UART 串口通信
查看>>
UWP入门(一) -- 先写几个简单控件简单熟悉下(别看这个)
查看>>
Spring+CXF整合来管理webservice(服务器启动发布webservice)
查看>>
css3 animation 在某些浏览器中特别快 bugfix
查看>>
【Android】如何获取本机号码、IMSI、EMSI
查看>>
Python之2维list转置、旋转及其简单应用
查看>>
[.NET领域驱动设计实战系列]专题八:DDD案例:网上书店分布式消息队列和分布式缓存的实现...
查看>>
使用zTree控件制作的表格形式的树形+数据菜单
查看>>
C#实现把指定文件夹下的所有文件复制到指定路径下以及修改指定文件的后缀名...
查看>>
你该知道的 TValue
查看>>
oracle 监控
查看>>
iOS创建界面方法的讨论
查看>>
Spring + Mybatis 使用 PageHelper 插件分页
查看>>
Linux大神必备-文本编辑器
查看>>
输出宽字符数组 C++
查看>>