1
我想使用一个mysql函数,我已经找到,但我似乎得到一些错误与此。下面是函数:Mysql错误分隔符:错误在行分隔符
SET GLOBAL log_bin_trust_function_creators=1;
DROP FUNCTION IF EXISTS digits;
DELIMITER $$
CREATE FUNCTION digits(str CHAR(32)) RETURNS CHAR(32)
BEGIN
DECLARE i, len SMALLINT DEFAULT 1;
DECLARE ret CHAR(32) DEFAULT '';
DECLARE c CHAR(1);
SET len = CHAR_LENGTH(str);
REPEAT
BEGIN
SET c = MID(str, i, 1);
IF c BETWEEN '0' AND '9' THEN
SET ret=CONCAT(ret,c);
END IF;
SET i = i + 1;
END ;
UNTIL i > len END REPEAT;
RETURN ret;
END
$$
DELIMITER ;
SELECT digits('123ab45cde6789fg');
我使用MariaDB的5.5
Server version: 5.5.50-MariaDB MariaDB Server
这里是我看到的错误:
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '$$
DELIMITER ;
我已经尝试了一些建议,如改变分隔符这原本是一个管道。将分隔符从下一个移动到END
到它下面,但是,这个错误似乎出现在两者中。
我已经尝试过修改错误的基本修改,但它仍然出现,它似乎虽然删除此部分时不再收到任何错误,但结果不正确。
REPEAT
BEGIN
SET c = MID(str, i, 1);
IF c BETWEEN '0' AND '9' THEN
SET ret=CONCAT(ret,c);
END IF;
SET i = i + 1;
END ;
UNTIL i > len END REPEAT;
任何指针都会很棒。
更新
我测试了其他几个版本,并有同样的问题。目前我正在使用Navicat。
Server version: 5.5.50-MariaDB MariaDB Server
Server version: 5.5.31-0ubuntu0.12.10.1 (Ubuntu)
Server version: 5.1.73 Source distribution
Server version: 5.5.52-MariaDB MariaDB Server
无法重现(MySQL的5.6)。 – Riedsio
无法在“服务器版本:10.1.21-MariaDB MariaDB服务器”上重现** –
** MariaDB 5.x **真的很旧,不是吗? –