用于按分隔符分割字符串的 mySQL 存储过程

2024-01-20

我正在编写一个存储过程,它将传递的字符串分解为 传递分隔符并返回结果的第 n 个元素。 n 已通过 也。

所以这就是我想出的:

CREATE PROCEDURE SPLIT(IN strToSplit text, IN strDelimiter varchar(1), IN nPartToGet int,OUT strSlice varchar(255))
BEGIN

  SET strSlice = replace(substring(substring_index(strToSplit, strDelimiter, nPartToGet),
    length(substring_index(strToSplit,strDelimiter, nPartToGet - 1)) + 1), strDelimiter, '')

END
;

可悲的是 mysql 一直提醒我那里有语法错误。恕我直言,这应该有效。有人可以戳我哪里出错了吗?

提前致谢

  K

您需要以“;”结束您的 SET并且,考虑到客户的解释;作为分隔符,您需要更改分隔符,以便可以输入实际的 ;进入程序。

mysql> delimiter //
mysql> CREATE PROCEDURE SPLIT(IN strToSplit text, IN strDelimiter varchar(1), IN nPartToGet int,OUT strSlice varchar(255))
    -> BEGIN
    -> SET strSlice = replace(substring(substring_index(strToSplit, strDelimiter,
    -> nPartToGet),     length(substring_index(strToSplit,strDelimiter, 
    -> nPartToGet - 1)) + 1), strDelimiter, '');
    -> END
    -> //
Query OK, 0 rows affected (0.01 sec)
mysql> delimiter ;
mysql> CALL SPLIT('1;2;3;4;5',';',3,@str);
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @str;
+------+
| @str |
+------+
| 3    |
+------+
1 row in set (0.00 sec)

相关文档:http://dev.mysql.com/doc/refman/5.0/en/stored-routines.html http://dev.mysql.com/doc/refman/5.0/en/stored-routines.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于按分隔符分割字符串的 mySQL 存储过程 的相关文章

随机推荐