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 **は本当に古いですか? –