首页 > 解决方案 > PostgreSQL:如何使用带有动态替换文本的 REPLACE

问题描述

我正在尝试使用简单的模板字符串为表download_url的每一行生成字符串 , 。每行的应替换到模板字符串中。datasetREPLACEid

这是我在下面尝试过的。鉴于id子查询与外部查询相关,我认为这会起作用:

SELECT id,
       name,
       REPLACE('https://example.com/dataset/{id}/download/', '{id}', id) 
as download_url
FROM dataset;

但我收到一个错误,表明不存在函数:

[42883] 错误:函数替换(未知,未知,整数)不存在 提示:没有函数与给定名称和参数类型匹配。您可能需要添加显式类型转换。

标签: sqlpostgresql

解决方案


我应该已经阅读了错误信息并正确提示!

解决方案是id像这样转换为字符串:

SELECT id,
       name,
       REPLACE('https://example.com/dataset/{id}/download/', '{id}', id::varchar) as download_url
FROM dataset;

推荐阅读