MySQL如何用分隔符分隔字符串

MySQL用分隔符分隔字符串

使用

可以使用如下函數

SUBSTRING_INDEX( i.final_car_type, ' ', 1 )
  • i.final_car_type 即 需要分隔的字符串
  • ’ ’ 即 用空格分隔該字符串
  • 1 即:取出該空格之前的所有字符

也就是說,如果count是正數,那麼就是從左往右數,第N個分隔符的左邊的全部內容。相反,如果是負數,那麼就是從右邊開始數,第N個分隔符右邊的所有內容

效果

如果count 是1

  • 表裡數據:東風風神全新AX7馬赫版 DF 21(天窗版)
  • 拆分後:東風風神全新AX7馬赫版

如果count 是-1

  • 表裡數據:東風風神全新AX7馬赫版 DF 21(天窗版)
  • 拆分後:21(天窗版)

MySQL存儲過程 根據分隔符拆分字符串

DELIMITER $$
 
CREATE DEFINER=`root`@`%` PROCEDURE `proc_split_Id`(in selectIds blob(65535),
in splitChar varchar(2))
BEGIN
set @i=0; 
CREATE TEMPORARY TABLE if not exists Id_Result_s(Id long NOT NULL);
truncate table Id_Result_s;
SET @cnt = 1+(LENGTH(selectIds) - LENGTH(REPLACE(selectIds,splitChar,''))); 
set @i=1; 
	start transaction;
    WHILE @i <=@cnt DO          
        SET @result = REPLACE(SUBSTRING(SUBSTRING_INDEX(selectIds, splitChar, @i),
       LENGTH(SUBSTRING_INDEX(selectIds, splitChar, @i -1)) + 1),
       splitChar, '');  
       INSERT INTO Id_Result_s(Id) VALUES (@result );
		SET @i = @i + 1;   
    END WHILE;  
	commit;    
END

selectIds為需要拆分的字符串,splitChar為分隔符. 拆分的結果保存在臨時表Id_Result_s中.

while中有insert語句,循環插入.在while前後加上start transaction和commit可以提高效率.

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: