mysql切割字符串,mysql完成字符串分割

 2023-11-18 阅读 23 评论 0

摘要:數據分割字符串,像spilt那樣按某個符號將字符串分割成多個數組 mysql:使用方法LENGTH()長度,SUBSTRING_INDEX()分割字符串,REPLACE()替換字符串REVERSE()反轉字符串思路用LENGTH()獲得該字符串長度,接著將該字符串的中的分割字符串全部替換成空字符串,再
數據分割字符串,像spilt那樣按某個符號將字符串分割成多個數組
mysql:
使用方法LENGTH()長度,
SUBSTRING_INDEX()分割字符串,
REPLACE()替換字符串
REVERSE()反轉字符串

思路用LENGTH()獲得該字符串長度,接著將該字符串的中的分割字符串全部替換成空字符串,再次獲得該字符串長度,將兩個長度一相減,便可以的到替換字符串的長度,即將要循環的次數,循環REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(str,param,@i)),param,1))這一句,去獲得所有的數據項,存入臨時表


sql語句:
存儲過程版本

mysql切割字符串?

CREATE PROCEDURE str_spilt(IN str varchar(2000),param varchar(50))  
BEGIN#分割字符串,用逗號隔開set @i=0;#如果不存在,擇創建一個用于保存分割字符串后數據的臨時表str_spilt_resultCREATE TEMPORARY TABLE if not exists str_spilt_result(id BIGINT(20) NOT NULL);   #清空臨時表truncate table str_spilt_result;  SET @cnt = 1+(LENGTH(str) - LENGTH(REPLACE(str,param,'')));  WHILE @i < @cnt DO  SET @i = @i + 1;  SET @result = REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(str,param,@i)),param,1));#把數據插入臨時表1INSERT INTO str_spilt_result(id) VALUES (@result);  END WHILE;  SELECT * from str_spilt_result; 
END;
測試:

CALL p_spilt('1,2,3,4,5,6',',')

函數版本(測試使用,僅僅測試原理,不建議使用)

mysql字符串。

CREATE FUNCTION f_spiltStr(DATA1 varchar(50))RETURNS int(11)BEGIN#分割字符串,用逗號隔開SET @length = LENGTH(DATA1) - LENGTH(REPLACE(DATA1,',',''));SET @i = 1;WHILE @i<@length+1DOset @i = @i + 1;SET @val=SUBSTRING_INDEX(SUBSTRING_INDEX(DATA1,',',-@i),',',1);#插入一張用于保存分割字符串結果的表中INSERT INTO t_sys_text(text) VALUES(CONCAT(@val,''));END WHILE;RETURN 1;END;



轉載于:https://www.cnblogs.com/marx-luo/p/6713076.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/174606.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息