You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MariaDB 10.1.31创建NO_UMLAUT函数时出现语法错误求助

排查MariaDB 10.1.31中NO_UMLAUT自定义函数的语法错误

我帮你梳理下这个自定义函数的语法问题,主要有两个核心问题需要修正:

1. 语句分隔符冲突

MariaDB默认使用;作为语句结束符,但你的函数体内部每个SET语句都用了;,这会导致数据库误以为函数定义在第一个SET语句后就结束了,直接抛出语法错误。解决办法是先临时修改语句分隔符,等函数创建完成后再改回默认值。

2. 函数体未完整闭合

你提供的代码最后是TextStri...,明显是代码被截断了——不仅缺少了剩余的替换逻辑,还没写函数结束的END;语句,同时也遗漏了返回处理后字符串的RETURN语句,这些都会导致语法校验失败。

修正后的完整代码示例

-- 临时修改分隔符为$$,避免和函数体内的;冲突
DELIMITER $$

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');
    -- 如果还有其他带变音符号的字符需要替换,继续在这里补充
    RETURN TextString; -- 返回最终处理后的字符串
END$$

-- 改回默认的语句分隔符;
DELIMITER ;

额外注意事项

  • 确保你的数据库账号拥有CREATE ROUTINE权限,否则会创建失败;
  • 如果你的字符串包含特殊变音符号,建议确保数据库、表以及连接的字符集为utf8mb4,避免字符替换时出现乱码或匹配失败的情况;
  • MariaDB 10.1版本已经停止维护,后续如果有条件建议升级到更稳定的新版本,获得更好的兼容性和安全性。

内容的提问来源于stack exchange,提问作者shaelex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:23:44