知行合一

博客园 首页 新随笔 联系 订阅 管理

 

 

DELIMITER $$ 
CREATE DEFINER = `root`@`%` FUNCTION `str_for_substr`(`num` int, `str` varchar(5000))
  RETURNS varchar(100)
 BEGIN

 SET @str_for_substr =
   
  SUBSTRING(
         SUBSTRING_INDEX(str, ',', num + 1),
         CASE num
     WHEN 0 THEN
         CHAR_LENGTH(
             SUBSTRING_INDEX(str, ',', num)
         ) + 1
     ELSE
         CHAR_LENGTH(
             SUBSTRING_INDEX(str, ',', num)
         ) + 2
     END,
     CASE num
 WHEN 0 THEN
     CHAR_LENGTH(
         SUBSTRING_INDEX(str, ',', num + 1)
     ) - CHAR_LENGTH(
         SUBSTRING_INDEX(str, ',', num)
     )
 ELSE
     CHAR_LENGTH(
         SUBSTRING_INDEX(str, ',', num + 1)
     ) - CHAR_LENGTH(
         SUBSTRING_INDEX(str, ',', num)
     ) - 1
 END
 );
 
 
     RETURN @str_for_substr;
 END$$
DELIMITER ;

 

测试:

mysql> SELECT str_for_substr(3,'one,two,three,four,five,six,seven') as 'value';
+-------+
| value |
+-------+
| four |
+-------+
1 row in set

posted on 2022-06-27 13:52  callbin  阅读(2191)  评论(0编辑  收藏  举报