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

如何在DBeaver中向PostgreSQL表插入字面量'${value}'不替换变量

PostgreSQL插入原始字符串${value}的解决方案

你遇到的问题是因为所用数据库客户端(如psql、ORM工具等)将${value}识别为未定义的变量,自动替换成了NULL。PostgreSQL本身不会解析单引号字符串中的${},问题出在客户端的预处理环节。以下是两种可靠的解决办法:

方法一:使用PostgreSQL美元引号字符串

这是最通用且稳妥的方式,美元引号能让PostgreSQL直接将内容作为原始字符串处理,完全避免客户端的变量插值干扰。

基础用法

用$$包裹需要保留的字符串:

INSERT INTO table (path, regex, replacement_path, uri)
VALUES ('/api/foo/**', '/foo/(?<value>.*)', $$/foo/${value}$$, 'http://localhost:8080');

自定义标签(避免冲突)

如果你的字符串本身包含$$,可以自定义唯一标签(如$rep_str$):

INSERT INTO table (path, regex, replacement_path, uri)
VALUES ('/api/foo/**', '/foo/(?<value>.*)', $rep_str$/foo/${value}$rep_str$, 'http://localhost:8080');

方法二:关闭客户端的变量插值功能

若坚持使用单引号,可临时关闭客户端的变量解析功能(以psql为例):

-- 关闭变量插值
\set variable_expansion off
-- 执行插入语句
INSERT INTO table (path, regex, replacement_path, uri)
VALUES ('/api/foo/**', '/foo/(?<value>.*)', '/foo/${value}', 'http://localhost:8080');
-- 恢复默认设置
\set variable_expansion on

注意:这种方式依赖具体客户端,通用性不如美元引号方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 15:48:12