我们有一个数据库,其中有一列中有一堆包含一些不良数据的记录,其中嵌入式编辑器转义了一些不应该转义的内容,并且它破坏了生成的链接。
我想运行一个查询来替换所有记录中的坏字符,但不知道该怎么做。我在 MySQL 中找到了该replace()函数,但如何在查询中使用它?
replace()
例如,如果我想在列中的所有记录<中用实际小于尖括号 ( ) 替换字符串,那么正确的语法是什么?可以在单个查询中完成(即一口气选择和替换所有内容),还是我必须进行多个查询?即使是多个查询,我如何使用对多个记录上的字段值进行替换?<``<``articleItem``replace()
<
<``<``articleItem``replace()
在一个非常通用的水平
UPDATE MyTable SET StringColumn = REPLACE (StringColumn, 'SearchForThis', 'ReplaceWithThis') WHERE SomeOtherColumn LIKE '%PATTERN%'
在您的情况下,您说这些被转义了,但是由于您没有指定它们是如何转义的,因此假设它们被转义到GREATERTHAN
GREATERTHAN
UPDATE MyTable SET StringColumn = REPLACE (StringColumn, 'GREATERTHAN', '>') WHERE articleItem LIKE '%GREATERTHAN%'
由于您的查询实际上将在字符串内部工作,因此您的WHERE子句进行模式匹配不太可能提高任何性能 - 它实际上将为服务器生成更多工作。除非您有另一个 WHERE 子句成员可以使此查询执行得更好,否则您可以简单地执行如下更新:
WHERE
UPDATE MyTable SET StringColumn = REPLACE (StringColumn, 'GREATERTHAN', '>')
您还可以嵌套多个REPLACE调用
REPLACE
UPDATE MyTable SET StringColumn = REPLACE (REPLACE (StringColumn, 'GREATERTHAN', '>'), 'LESSTHAN', '<')
您也可以在选择数据时执行此操作(而不是在保存数据时)。
所以而不是:
SELECT MyURLString From MyTable
你可以做
SELECT REPLACE (MyURLString, 'GREATERTHAN', '>') as MyURLString From MyTable