如何从postgresql中的字符串中删除特殊字符

Posted

技术标签:

【中文标题】如何从postgresql中的字符串中删除特殊字符【英文标题】:How to remove special characters from a string in postgresql 【发布时间】:2021-02-17 13:12:12 【问题描述】:

我正在尝试使用 REGEXP_REPLACE 删除以下特殊字符:"[]

来自以下文本字段:["x":"y","s":"G_1","cn":"C8","cn":"M2","gn":"G_2","cn":"CA99","c":"ME3","gn":"G_3","c":"CA00"] 并将它们替换为任何内容,甚至没有空格。

*不用说,这只是一个示例字符串,我需要为相似但不同的字符串找到一致的解决方案。

我试图运行以下命令:SELECT REGEXP_REPLACE('["x":"y","s":"G_1","cn":"C8","cn":"M2","gn":"G_2","cn":"CA99","c":"ME3","gn":"G_3","c":"CA00"] ','[[]":]','')

但收到几乎相同的字符串..

提前致谢!

【问题讨论】:

这看起来像一个 JSON 文本。为什么要从中删除结构? 【参考方案1】:

您需要对特殊字符 (\) 进行转义,并指定要对每个字符 ('g') 重复该操作,否则它将在第一次匹配时停止

 SELECT REGEXP_REPLACE(
    '["x":"y","s":"G_1","cn":"C8","cn":"M2","gn":"G_2","cn":"CA99","c":"ME3","gn":"G_3","c":"CA00"] ',
     '[\[\]":]',
     '',
     'g');
                  regexp_replace
--------------------------------------------------
 xy,sG_1,cnC8,cnM2,gnG_2,cnCA99,cME3,gnG_3,cCA00
(1 row)

【讨论】:

ps:问题要求删除[],你的例子也删除了:",所以我按照你的例子.. 您好JGH,非常感谢您的帮助,但正如您在评论中提到的,我需要继续:(这意味着我给出的示例是错误的),必填结果应该如下:x:y,s:G_1,cn:C8,cn:M2,gn:G_2,cn:CA99,c:ME3,gn:G_3,c:CA00 @TalSibony 这样您就可以从 regex_replace 第二个参数 ('[\[\]"]') 中删除 : 噢,不,我看到它只需要从解决方案的第二个参数中删除 :,非常感谢!

以上是关于如何从postgresql中的字符串中删除特殊字符的主要内容,如果未能解决你的问题,请参考以下文章

从C#中的数据中删除特殊字符后如何将dbf文件中的数百万行数据上传到SQL Server

如何在一组字符串中删除 r 中的这些特殊字符:’s,…

通过存储在 Postgresql 中带有特殊字符的变量名中来删除约束

从JS中的字符串中删除所有特殊字符

使用 spark 从 csv 文件中删除所有特殊字符

如何使用php从字符串中删除特殊字符,例如:&)(\ /?