首页 > 解决方案 > MariaDB '' 附近的语法不正确

问题描述

正如标题所说,我的语法在某处有错误。这是 MariaDB 10.1.31。

DROP FUNCTION IF EXISTS NO_UMLAUT;
CREATE FUNCTION NO_UMLAUT(TextString VARCHAR(255)) RETURNS VARCHAR(255)
BEGIN
    SET TextString = REPLACE(TextString, 'ä', 'a');
    SET TextString = REPLACE(TextString, 'ë', 'e');
    SET TextString = REPLACE(TextString, 'ḧ', 'h');
    SET TextString = REPLACE(TextString, 'n̈', 'n');
    SET TextString = REPLACE(TextString, 'ï', 'i');
    SET TextString = REPLACE(TextString, 'ẗ', 't');
    SET TextString = REPLACE(TextString, 'ö', 'o');
    SET TextString = REPLACE(TextString, 'ẅ', 'w');
    SET TextString = REPLACE(TextString, 'ß', 'b');
    SET TextString = REPLACE(TextString, 'ü', 'u');
    SET TextString = REPLACE(TextString, 'ẍ', 'x');
    SET TextString = REPLACE(TextString, 'ÿ', 'y');
    RETURN TextString;
END;

和错误:

 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 '' at line 3.

到目前为止,我尝试了文档中的一个函数,并且语法也存在错误。我在 HeidiSQL 9.5.0.5196 中执行这个查询。

标签: sqldatabasemariadbheidisql

解决方案


我认为你只需要DELIMITER陈述。

函数本身很好,正如这个SQL Fiddle所示(MariaDB 和 MySQL 是相同的)。

尝试添加:

 DELIMITER $$

 <your function definition>

 DELIMITER ;

推荐阅读