sql - MariaDB '' 附近的错误语法

标签 sql database mariadb heidisql

正如标题所说,我的语法某处有错误。这是 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 中执行此查询。

最佳答案

我认为您只需要 DELIMITER 语句。

函数本身没问题,如图所示 SQL Fiddle (为此目的,MariaDB 和 MySQL 是相同的)。

尝试添加:

 DELIMITER $$

 <your function definition>

 DELIMITER ;

关于sql - MariaDB '' 附近的错误语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50025043/

相关文章:

c# - 更新查询位置附近的语法不正确

mysql - 如何将 Maximum 用于 SELECT 语句

mysql - MySQL 中的子查询如果存在则检索最大日期 NULL 如果不存在

mysql - 重命名数据库名称-mysql

c# - LINQ 的复杂 SQL 子查询

mysql - 最佳实践 - 在本地 mysql 服务器/RDS 上开发?

SQL Server 其中 start_date 和 End_date 之间的日期

mysql - 如何动态更新 SQL 字符串?

python - Django-ManyToMany表提取了错误的信息

python - 将 NULL/Empty 值插入实际字段 Postgresql