且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

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

更新时间:2023-02-18 09:18:58

在非常通用的层面

UPDATE MyTable

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

WHERE SomeOtherColumn LIKE '%PATTERN%'

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

In your case you say these were escaped but since you don't specify how they were escaped, let's say they were escaped to GREATERTHAN

UPDATE MyTable

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

WHERE articleItem LIKE '%GREATERTHAN%'

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

Since your query is actually going to be working inside the string, your WHERE clause doing its pattern matching is unlikely to improve any performance - it is actually going to generate more work for the server. Unless you have another WHERE clause member that is going to make this query perform better, you can simply do an update like this:

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

你也可以嵌套多个REPLACE调用

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

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

You can also do this when you select the data (as opposed to when you save it).

所以而不是:

从 MyTable 中选择 MyURLString

你可以这样做

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