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

PostgreSQL创建normalize函数失败:语法错误问题求助

解决PostgreSQL函数创建的语法错误问题

问题分析

报错ERROR: syntax error at or near "("的核心原因是函数体中translate的第二个参数存在未转义的单引号:在PostgreSQL的单引号字符串中,单个单引号会被解析为字符串结束标记,导致后续内容语法失效。另外,函数中还包含中文全角引号(‘’),虽然不会引发语法错误,但如果你的需求是处理英文引号,这类字符可能不需要保留。

修正后的函数创建语句

CREATE OR REPLACE FUNCTION normalize(input text, separator text DEFAULT '')
RETURNS text AS $$
BEGIN
    -- 转义字符串中的单引号(用两个单引号表示一个),并可按需移除中文引号
    RETURN translate(lower(public.f_unaccent(input)), ' '',:-`´''_' , separator);
END
$$ LANGUAGE plpgsql IMMUTABLE;

额外排查点

  • 确认public.f_unaccent函数已存在:如果该自定义函数未创建,需要先定义它,否则会出现函数不存在的错误。
  • 避免内置函数冲突:PostgreSQL 12+版本内置了pg_catalog.normalize函数(用于Unicode规范化),虽然可以通过参数重载自定义同名函数,但如果不确定,可将函数名改为custom_normalize这类自定义名称,避免混淆。
  • 清理不可见字符:如果仍有问题,可将代码复制到纯文本编辑器(如Notepad++),开启显示所有字符功能,检查是否存在全角空格、零宽空格等不可见特殊字符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 18:35:14