更新和替换包含多个引号的字符串 postgresql

Update and replace strings that contain multiple quotes postgresql

提问人:MJ B 提问时间:8/14/2020 最后编辑:Akhilesh MishraMJ B 更新时间:8/15/2020 访问量:512

问:

我有一个数据集,其中包含要拆分的列。我正在使用 pgadmin 4,我是 PostgreSQL 的新手。不幸的是,我必须使用的分隔符包含引号和双引号:

1) ', " 
2) ", '
3) ", "

为了让我更轻松地处理这些数据,我想用一些我可以更容易使用的东西来替换所有这些分隔符字符串,比如“分隔符”。然后,我将使用类似这样的东西来解析我的数据

SELECT SPLIT_PART(descriptions, 'delimiter', 1)
FROM all_package_hist

我搜索了如何使用额外的单引号 ('')、正斜杠和美元符号转义引号,但没有运气。我尝试运行以下代码,但它刚刚从文本中删除了我的双引号,而不是用“分隔符”替换它

UPDATE all_package_hist SET descriptions = REPLACE(descriptions, $$', "$$, 'delimiter')

取而代之的是,它替换为 ,', "'

请帮忙!先谢谢你。

postgresql 替换 分隔符 引号双 引号

评论

0赞 Mike Organek 8/14/2020
为什么要更新?你试过吗?方括号内是一个双引号字符,后跟两个单引号字符(这就是 postgresql 中转义单引号的方式)。如果您总是有引号,则可以删除这些字符。此外,CSV 并不像这样简单,因为引号应该防止空格、引号或字符可能出现在应该是数组元素的内容中。regexp_split_to_array(column, '["'']?,["'']?')?,
0赞 MJ B 8/14/2020
你能把我链接到regexp_split_to_array函数如何工作的描述吗?我找不到任何关于它的文档。或者你能准确地写出代码以便我理解吗?我想替换,因为我正在做更多的子字符串反向弯曲,而我拥有的 4 个不同的分隔符会使我的所有查询呈指数级增长。
0赞 Mike Organek 8/14/2020
文档在这里: postgresql.org/docs/current/functions-matching.html 我写的匹配模式接受以下内容作为分隔符:、、和。如果你只需要前四个,那就去掉这些字符。','","',"",',"",,'',?
0赞 MJ B 8/15/2020
@MikeOrganek我想我快到了。我实际上需要您列出的前四个分隔符',',',“,',”和“,regexp_split_to_array',split_desc来自all_package_hist
0赞 Mike Organek 8/15/2020
如果你只需要前四个,那么它应该是.这与第一个不包含字符的相同。您无需重复它们。方括号表示它将匹配括号内的任何字符之一,因此整个匹配表达式应为["''],["'']?regexp_split_to_array(column, '["''],["'']')

答: 暂无答案