比如現在有一字串:1,2,44,5,666,29232
要把它按照逗號分割成: 1
2 44
5666
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.
return1+
(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'';
setresult
=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
notnull);
while i < cnt
doset 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)
mysql分割字串 mysql分割字串
專案有通過一批id去過濾結果的需求,因為這個id是從其他平台拉下來的excel,為了避免加引號逗號的麻煩,在mysql儲存過程裡面拼接。在此做個記錄。很多地方用得上。1.通過某個字元,分割字串的函式。輸入分別為f string 待分割字串 f delimiter 分割字元 f order 取的字串的...
MySQL中實現分割字串的方法
比如現在有一字串 1,2,44,5,666,29232 要把它按照逗號分割成 1 2 44 5 666 29232 而且還要求它的總數。這個我以前寫過。不過今天規範一下。1 具體函式 sql code delimiter create definer root function func get s...
MySQL中實現分割字串的方法
比如現在有一字串 1,2,44,5,666,29232 要把它按照逗號分割成 1 2 44 5666 29232 而且還要求它的總數。這個我以前寫過。不過今天規範一下。1 具體函式 sql code delimiter create definer root function func get sp...