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

如何禁止Postgres中单双引号字符串内的换行行为?

问题解答

PostgreSQL没有提供直接关闭单/双引号包裹的字符串字面量中允许换行的配置项,因为这是SQL标准规定的行为,Postgres严格遵循SQL标准实现该特性。

为什么会出现混乱的语法错误?

以你遇到的错误为例:

SELECT "updateFields"->>'enumTypeName"
FROM input
...

这里的'enumTypeName" 是未闭合的单引号字符串,PostgreSQL会将后续所有内容(包括换行)都视为该字符串的一部分,直到找到匹配的单引号才会终止,因此报错位置会出现在查询的后续随机位置,而非未闭合引号的行尾。

可行的替代方案

  • 强制使用美元引号($$语法)定义字符串:
    美元引号的匹配逻辑更清晰,即使字符串内包含单/双引号或换行,也不会导致解析混淆。如果未闭合美元引号,PostgreSQL会在当前行附近直接报错。示例:
    SELECT "updateFields"->>$$enumTypeName$$
    FROM input
    
  • 使用SQL语法检查工具提前排查问题:
    在开发或调试阶段,用pgFormatter、IDE内置的SQL语法检查(如DataGrip、VS Code的SQL扩展)等工具,可以提前发现未闭合的引号、语法拼写错误,避免运行时出现模糊的报错。
  • 确保standard_conforming_strings参数开启:
    该参数默认已开启,确保字符串的处理严格遵循SQL标准,虽然不影响换行的允许,但能避免其他字符串解析相关的意外问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 15:27:03