SQL质量字符删除

时间:2016-06-02 18:19:29

标签: sql database postgresql replace

好的,我们现在有一个数据库,用户登录并保存状态信息。保存状态几乎只是一个JSON blob,但我们发布的客户端有一个错误,其中有一个' \'生成角色,然后每次用户登录新的' \'为每个'添加。如果用户注销并返回足够的时间,这会导致非常严重的困难 - 最终导致用户无法再登录。

我们修复了客户端,但在修复之前,所有这些保存状态都无法使用。

此处的最终目标是使用SQL查询命中数据库以尝试删除所有' \'当连续存在多个时。建议?也许是某种REPLACE电话?

2 个答案:

答案 0 :(得分:0)

您可能希望了解CTE。它们允许您以递归方式回调数据,直到达到特定条件。在这种情况下,您将递归调用REPLACE(myString,'\',''),直到\的计数为1。

这将处理从1斜杠到1000+斜杠的任何情况。

答案 1 :(得分:0)

使用类似

的内容
UPDATE yourTable SET JsonBlob = regexp_replace(JsonBlob, '\\{2,}', '');

其中'\\{2,}'表示两个或多个反斜杠。第一个反斜杠是逃避第二个反斜杠。它必须是POSIX正则表达式。

PostgreSQL 9.5.3文档:9.4. String Functions and Operators