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 **真的很舊,不是嗎? –