mysql에서 split 함수

2785 단어 mysql
mysql에 split 함수가 없습니다. 직접 써야 합니다.
1) 지정된 문자로 분할된 문자열의 개수를 가져옵니다.
    
DELIMITER $$

DROP FUNCTION IF EXISTS `sims`.`func_get_split_string_total`$$

CREATE DEFINER=`root`@`localhost` FUNCTION `func_get_split_string_total`(
f_string varchar(1000),f_delimiter varchar(5)
) RETURNS int(11)
BEGIN
  declare returnInt int(11);
  if length(f_delimiter)=2  then
     return 1+(length(f_string) - length(replace(f_string,f_delimiter,'')))/2;
  else    
     return 1+(length(f_string) - length(replace(f_string,f_delimiter,'')));
  end if;
END$$

DELIMITER ;

예:funcget_split_string_total('abc||def|||gh','||') 결과는 3
 
2) i번째 분할된 문자열을 가져옵니다.
 
   
DELIMITER $$

DROP FUNCTION IF EXISTS `sims`.`func_get_split_string`$$

CREATE DEFINER=`root`@`localhost` FUNCTION `func_get_split_string`(
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 ;

예: funcget_split_string('abc|||def||gh','|||', 2)은 def
 
 
3) 요구사항: A표의 한 필드 값은 1|||||2이며, select에서는 B자전표와 연결을 통해 a, b를 얻어야 한다.
   
CREATE DEFINER=`root`@`localhost` FUNCTION `getDictName`(v_str varchar(100)) RETURNS varchar(100) CHARSET utf8
BEGIN
          
          DECLARE i int(4);
          DECLARE dictCode varchar(100);
          DECLARE dictName varchar(100);
          DECLARE returnStr varchar(100); 
        
          set i = 1;
          set returnStr = '';      
          
          if(v_str is null or length(v_str)=0) then
               return returnStr;
          else
          
          while i<=func_get_split_string_total(v_str,'||')
          do
               set dictCode = func_get_split_string(v_str,'||',i);
          
               select names into dictName from sims_dd_dict where code = dictCode; 
          
               set returnStr = concat(returnStr,',',dictName);  --          ,    EXCEL      ,            
          set i = i+1;
          end while;
           
          set returnStr = subString(returnStr,2);          
          return returnStr;
           
          end if;
    END$$

  
     
 
 

좋은 웹페이지 즐겨찾기