由于工作需要需要处理一些以逗号分隔的字符串,每次都要现做很是麻烦,网上找了很多都没有现成的,好吧,自己动手写一个好了
1 CREATE DEFINER = `harri`@`%` FUNCTION `substr_for_str`(`num` int, `str` varchar(5000)) 2 RETURNS varchar(100) 3 BEGIN 4 /*函数功能: 把带逗号的字符串分割取出 5 参数: num 要取出的字符串的索引值, 以0开始 6 str 以逗号分割的字符串 7 扩展: 将逗号替换成其他符合,即可完成不同分隔符拆分字符串,亦可以把分隔符作为参数 8 */ 9 SET @substr_for_str = #Routine body goes here... 10 11 SUBSTRING( 12 SUBSTRING_INDEX(str, ‘,‘, num + 1), 13 CASE num 14 WHEN 0 THEN 15 CHAR_LENGTH( 16 SUBSTRING_INDEX(str, ‘,‘, num) 17 ) + 1 18 ELSE 19 CHAR_LENGTH( 20 SUBSTRING_INDEX(str, ‘,‘, num) 21 ) + 2 22 END, 23 CASE num 24 WHEN 0 THEN 25 CHAR_LENGTH( 26 SUBSTRING_INDEX(str, ‘,‘, num + 1) 27 ) - CHAR_LENGTH( 28 SUBSTRING_INDEX(str, ‘,‘, num) 29 ) 30 ELSE 31 CHAR_LENGTH( 32 SUBSTRING_INDEX(str, ‘,‘, num + 1) 33 ) - CHAR_LENGTH( 34 SUBSTRING_INDEX(str, ‘,‘, num) 35 ) - 1 36 END 37 ); 38 39 40 RETURN @substr_for_str; 41 END;
测试:
mysql> SELECT str_for_substr(3,‘one,two,three,four,five,six,seven‘) as ‘value‘;
+-------+
| value |
+-------+
| four |
+-------+
1 row in set
时间: 2024-12-18 01:28:45