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