如何解决用split_part函数替换字符串
| 我想将定界符\',\'之前的第一个单词替换为\'0,第一个单词\')select replace(\'tab,graph,map\',split_part(\'tab,graph\',\',1) like \'tab\',\'0,tab\')
错误:函数replace(未知,布尔值,未知)不存在
第1行:选择replace(\'tab,graph,map \',split_part(\'tab,graph \',\',\',...
^
提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。
解决方法
replace
函数将替换所有出现的字符串,因此您必须确保要替换的字符串是唯一的或使用其他字符串。但是,默认情况下,regexp_replace
仅替换第一个出现的位置,因此您可以使用它。您的问题尚不清楚预期的输出是什么,但这也许就是您要寻找的:
=> select regexp_replace(\'tab,graph,map\',\',\'0,\');
regexp_replace
----------------
tab0,map
或者这个:
=> select regexp_replace(\'tab,\'tab,\');
regexp_replace
----------------
0,map
甚至这个:
=> select regexp_replace(\'tab,map
,您需要进行强制转换,因为该函数需要replace(text,text,text),并且不知道如何处理文字字符串,称它们为unknown ...
cast(\'tab,map\' AS text)
还有第二个参数是LIKE比较吗?它返回布尔值,但是函数replace希望它是定界符。
CAST(split_part(\'tab,graph\',1) AS text)
最终是最后一个参数(与第一个参数相同)
cast(\'0,tab\' AS text)
当然,如果您真的只想在字符串\'tab,graph,map \'的前面加上\'0,\',则可以这样做...
SELECT \'0,\' || \'tab,map\' ;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。