我正在编写一个存储过程,它会通过a传播一个传递的字符串 传递分隔符并返回结果的第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
答案 0 :(得分:2)
你需要用';'结束你的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