MySQL中實現分割字串的方法

2021-07-11 03:41:04 字數 2228 閱讀 5693

比如現在有一字串: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...