MySQL中实现分割字符串的方法
2016-08-02 17:11
531 查看
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 ;
测试的存储过程:
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)
比如现在有一字符串: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)
相关文章推荐
- POSTGRESQL 与MYSQL 实现分割字符串的方法对比
- 【原创】 POSTGRESQL 与MYSQL 实现分割字符串的方法对比
- 【原创】 POSTGRESQL 与MYSQL 实现分割字符串的方法对比
- MySQL中实现分割字符串的方法
- MySQL中实现分割字符串的方法
- MySQL中实现分割字符串的方法
- MySQL分割字符串的实现
- C#实现多个字符分割字符串的方法
- C++ 字符串分割方法 实现split
- MySQL里实现类似SPLIT的分割字符串的函数
- 不用Split方法实现分割字符串
- 几种分割字符串实现方法的比较
- 几种分割字符串实现方法的比较
- asp 关键词字符串分割如何实现方法
- C#实现字符串按多个字符采用Split方法分割
- python实现mysql的单引号字符串过滤方法
- php实现将字符串按照指定距离进行分割的方法
- C#实现字符串按多个字符采用Split方法分割
- MySQL里实现类似SPLIT的分割字符串的函数
- C#实现字符串按多个字符采用Split方法分割