mysql字符串字段如何按照逗號截取進(jìn)行儲存

找了好久,想通過mysql把字符串以‘,’拆分成多個數(shù)據(jù),必須用存儲過程來實(shí)現(xiàn)這個功能,在這里實(shí)現(xiàn)一下這個功能,例如將

mysql字符串字段如何按照逗號截取進(jìn)行儲存

轉(zhuǎn)為

mysql字符串字段如何按照逗號截取進(jìn)行儲存

排除里面的N,然后把數(shù)字提取出來:

#查看已存在的存儲過程:SHOW?PROCEDURE?STATUS
#?函數(shù):func_split_TotalLength?  DELIMITER?$$?  DROP?function?IF?EXISTS?`func_split_TotalLength`?$$?  CREATE?FUNCTION?`func_split_TotalLength`?  (f_string?varchar(1000),f_delimiter?varchar(5))?RETURNS?int(11)?  BEGIN
#?計(jì)算傳入字符串的總length?  return?1+(length(f_string)?-?length(replace(f_string,f_delimiter,'')));?  END?$$?  DELIMITER;
#?函數(shù):func_split?  DELIMITER?$$?  DROP?function?IF?EXISTS?`func_split`?$$?  CREATE?FUNCTION?`func_split`?  (f_string?varchar(1000),f_delimiter?varchar(5),f_order?int)?RETURNS?varchar(255)?CHARSET?utf8?  BEGIN
?#?拆分傳入的字符串,返回拆分后的新字符串?  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;
#?存儲過程:splitString?  DELIMITER?$$?  DROP?PROCEDURE?IF?EXISTS?`splitString`?$$?  CREATE?PROCEDURE?`splitString`?  (IN?f_string?varchar(1000),IN?f_delimiter?varchar(10))?  BEGIN
#?拆分結(jié)果?declare?cnt?int?default?0;?declare?i?int?default?0;?set?cnt?=?func_split_TotalLength(f_string,f_delimiter);?DROP?TABLE?IF?EXISTS?`tmp_split`;?create?temporary?table?`tmp_split`?(`status`?varchar(128)?not?null)?DEFAULT?CHARSET=utf8;?while?i?<pre class="brush:sql;toolbar:false">#插入除了'N'之外的所有數(shù)據(jù)  IF?func_split(f_string,f_delimiter,i)?!=?'N'?THEN  insert?into?tmp_split(`status`)?values?(func_split(f_string,f_delimiter,i));?END?IF;?  end?while;?  END$$?  DELIMITER;
call?splitString(?(SELECT?overdue_record_2year?FROM?Loan?l?WHERE?l.papers_id?=?231203199305030219?ORDER?BY?papers_id?DESC?LIMIT?1)?,",");?  select?*?from?tmp_split;

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊12 分享