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;