用 split_part 函数替换字符串

发布于 2024-11-09 15:19:44 字数 296 浏览 0 评论 0原文

我想用“0,第一个单词”替换分隔符“,”之前的第一个单词)

select replace('tab,graph,map', split_part('tab,graph', ',', 1) like 'tab','0, tab')

错误:函数替换(未知,布尔值,未知)不存在 第 1 行:选择 Replace('tab,graph,map', split_part('tab,graph', ',',... ^ 提示:没有函数与给定的名称和参数类型匹配。您可能需要添加显式类型转换。

I want to replace the first word before delimeter ' ,' with ' 0, the first word ')

select replace('tab,graph,map', split_part('tab,graph', ',', 1) like 'tab','0, tab')

ERROR: function replace(unknown, boolean, unknown) does not exist
LINE 1: select replace('tab,graph,map', split_part('tab,graph', ',',...
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

叹倦 2024-11-16 15:19:44

replace 函数会替换所有出现的字符串,因此您必须确保要替换的字符串是唯一的或使用其他字符串。但是,regexp_replace< /a> 默认情况下仅替换第一个出现的位置,因此您可以使用它;你的问题有点不清楚预期的输出是什么,但也许这就是你正在寻找的:

=> select regexp_replace('tab,graph,map', ',', '0,');
 regexp_replace 
----------------
 tab0,graph,map

或者这个:

=> select regexp_replace('tab,graph,map', 'tab,', '0,');
 regexp_replace 
----------------
 0,graph,map

或者甚至可能是这个:

=> select regexp_replace('tab,graph,map', 'tab,', '0,,');
 regexp_replace 
----------------
 0,,graph,map

The replace function replaces all occurrences of the string so you have to make sure the string to replace is unique or use something else. However, regexp_replace only replaces the first occurrence by default so you can use that; your question is a little unclear about what the expected output is but maybe this is is what you're looking for:

=> select regexp_replace('tab,graph,map', ',', '0,');
 regexp_replace 
----------------
 tab0,graph,map

Or this one:

=> select regexp_replace('tab,graph,map', 'tab,', '0,');
 regexp_replace 
----------------
 0,graph,map

Or maybe even this:

=> select regexp_replace('tab,graph,map', 'tab,', '0,,');
 regexp_replace 
----------------
 0,,graph,map
山有枢 2024-11-16 15:19:44

您需要进行强制转换,因为该函数需要替换(文本,文本,文本)并且不知道如何处理您的文字字符串,称它们为未知...

cast('tab,graph,map' AS text)

第二个参数也是 LIKE 比较吗?它返回布尔值,但函数替换期望它作为分隔符。

CAST(split_part('tab,graph', ',', 1) AS text)

最后是最后一个参数(与第一个参数相同的问题)

cast('0, tab' AS text)

当然,如果你真的只想在字符串“tab,graph,map”前面添加“0,”,你可以这样做......

SELECT '0, ' || 'tab,graph,map' ;

you need to cast, since the function expects replace(text, text, text) and does not know how to handle your literal strings calling them unknown...

cast('tab,graph,map' AS text)

also the 2nd param is a LIKE comparison ? which returns boolean, but the function replace expects it to be the delimiter.

CAST(split_part('tab,graph', ',', 1) AS text)

finally the last param (same problem as the first)

cast('0, tab' AS text)

of course if you really just want to prepend '0, ' to your string, 'tab,graph,map' you could just do that...

SELECT '0, ' || 'tab,graph,map' ;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文