首頁 >資料庫 >mysql教程 >mysql中split函数

mysql中split函数

WBOY
WBOY原創
2016-06-07 15:33:502538瀏覽

在mysql中并没有split函数,需要自己写: 1)获得按指定字符分割的字符串的个数: Sql代码 DELIMITER$$ DROP FUNCTION IFEXISTS`sims`.`func_get_split_string_total`$$ CREATE DEFINER=`root`@`localhost` FUNCTION `func_get_split_string_total`( f_strin

在mysql中并没有split函数,需要自己写:

1)获得按指定字符分割的字符串的个数:

    

Sql代码  mysql中split函数

  1. DELIMITER $$  
  2.   
  3. DROP FUNCTION IF EXISTS `sims`.`func_get_split_string_total`$$  
  4.   
  5. CREATE DEFINER=`root`@`localhost` FUNCTION `func_get_split_string_total`(  
  6. f_string varchar(1000),f_delimiter varchar(5)  
  7. RETURNS int(11)  
  8. BEGIN  
  9.   declare returnInt int(11);  
  10.   if length(f_delimiter)=2  then  
  11.      return 1+(length(f_string) - length(replace(f_string,f_delimiter,'')))/2;  
  12.   else      
  13.      return 1+(length(f_string) - length(replace(f_string,f_delimiter,'')));  
  14.   end if;  
  15. END$$  
  16.   
  17. DELIMITER ;  

   例:func_get_split_string_total('abc||def||gh','||')  结果为3  

 

    2)得到第i个分割后的字符串。

 

   

Sql代码  mysql中split函数

  1. DELIMITER $$  
  2.   
  3. DROP FUNCTION IF EXISTS `sims`.`func_get_split_string`$$  
  4.   
  5. CREATE DEFINER=`root`@`localhost` FUNCTION `func_get_split_string`(  
  6. f_string varchar(1000),f_delimiter varchar(5),f_order intRETURNS varchar(255) CHARSET utf8  
  7. BEGIN  
  8.   declare result varchar(255) default '';  
  9.   set result = reverse(substring_index(reverse(substring_index(f_string,f_delimiter,f_order)),f_delimiter,1));  
  10.   return result;  
  11. END$$  
  12.   
  13. DELIMITER ;  

   例如:func_get_split_string('abc||def||gh','||',2) 为def

 

 

   3) 需求:A表中的一个字段值为1||2, 在select 时要通过和B字典表的关联得到a,b

   

Sql代码  mysql中split函数

  1. CREATE DEFINER=`root`@`localhost` FUNCTION `getDictName`(v_str varchar(100)) RETURNS varchar(100) CHARSET utf8  
  2. BEGIN  
  3.             
  4.           DECLARE i int(4);  
  5.           DECLARE dictCode varchar(100);  
  6.           DECLARE dictName varchar(100);  
  7.           DECLARE returnStr varchar(100);   
  8.           
  9.           set i = 1;  
  10.           set returnStr = '';        
  11.             
  12.           if(v_str is null or length(v_str)=0) then  
  13.                return returnStr;  
  14.           else  
  15.             
  16.           while i'||')  
  17.           do  
  18.                set dictCode = func_get_split_string(v_str,'||',i);  
  19.             
  20.                select names into dictName from sims_dd_dict where code = dictCode;   
  21.             
  22.                set returnStr = concat(returnStr,',',dictName);  -- 这里要用中文的逗号,否则导出EXCEL的时候会串行,因为程序中是以逗号分隔的  
  23.           set i = i+1;  
  24.           end while;  
  25.              
  26.           set returnStr = subString(returnStr,2);            
  27.           return returnStr;  
  28.              
  29.           end if;  
  30.     END$$  
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn