我想要在分隔符'''之前替换第一个单词'0,第一个单词')
select replace('tab,graph,map', split_part('tab,graph', ',', 1) like 'tab','0, tab')
错误:函数replace(unknown,boolean,unknown)不存在 第1行:选择替换('标签,图表,地图',split_part('标签,图表',',',... ^ 提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。
答案 0 :(得分:2)
replace
函数替换了所有出现的字符串,因此您必须确保要替换的字符串是唯一的或使用其他内容。但是,regexp_replace
默认情况下仅替换第一次出现,因此您可以使用它;你的问题有点不清楚预期的输出是什么,但也许这就是你正在寻找的东西:
=> 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
答案 1 :(得分:-1)
你需要强制转换,因为函数需要替换(文本,文本,文本),并且不知道如何处理你的文字字符串,将它们称为未知......
cast('tab,graph,map' AS text)
第二个参数也是LIKE比较?返回boolean,但函数replace期望它是分隔符。
CAST(split_part('tab,graph', ',', 1) AS text)
最后是最后一个参数(与第一个相同的问题)
cast('0, tab' AS text)
当然,如果你真的只想在你的字符串,'标签,图表,地图'前面添加'0',你可以这样做......
SELECT '0, ' || 'tab,graph,map' ;