小编典典

如何使用 mySQL replace() 替换多条记录中的字符串?

all

我们有一个数据库,其中有一列中有一堆包含一些不良数据的记录,其中嵌入式编辑器转义了一些不应该转义的内容,并且它破坏了生成的链接。

我想运行一个查询来替换所有记录中的坏字符,但不知道该怎么做。我在 MySQL
中找到了该replace()函数,但如何在查询中使用它?

例如,如果我想在列中的所有记录<中用实际小于尖括号 ( )
替换字符串,那么正确的语法是什么?可以在单个查询中完成(即一口气选择和替换所有内容),还是我必须进行多个查询?即使是多个查询,我如何使用对多个记录上的字段值进行替换?<``&lt;``articleItem``replace()


阅读 292

收藏
2022-08-08

共1个答案

小编典典

在一个非常通用的水平

UPDATE MyTable

SET StringColumn = REPLACE (StringColumn, 'SearchForThis', 'ReplaceWithThis')

WHERE SomeOtherColumn LIKE '%PATTERN%'

在您的情况下,您说这些被转义了,但是由于您没有指定它们是如何转义的,因此假设它们被转义到GREATERTHAN

UPDATE MyTable

SET StringColumn = REPLACE (StringColumn, 'GREATERTHAN', '>')

WHERE articleItem LIKE '%GREATERTHAN%'

由于您的查询实际上将在字符串内部工作,因此您的WHERE子句进行模式匹配不太可能提高任何性能 - 它实际上将为服务器生成更多工作。除非您有另一个
WHERE 子句成员可以使此查询执行得更好,否则您可以简单地执行如下更新:

UPDATE MyTable
SET StringColumn = REPLACE (StringColumn, 'GREATERTHAN', '>')

您还可以嵌套多个REPLACE调用

UPDATE MyTable
SET StringColumn = REPLACE (REPLACE (StringColumn, 'GREATERTHAN', '>'), 'LESSTHAN', '<')

您也可以在选择数据时执行此操作(而不是在保存数据时)。

所以而不是:

SELECT MyURLString From MyTable

你可以做

SELECT REPLACE (MyURLString, 'GREATERTHAN', '>') as MyURLString From MyTable

2022-08-08