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

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

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

例如,如果我想在 articleItem列中包含 &lt;的所有记录中用一个实际的小于角括号(<)替换字符串 &lt;,那么正确的语法是什么?它是否可以在一个查询中完成(即一次性全部选择和替换) ,还是必须执行多个查询?即使是多个查询,如何使用 replace()替换多个记录上的字段的值?

422025 次浏览

在一个非常普通的水平

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

UPDATE some_table SET some_field = REPLACE(some_field, '&lt;', '<')

看看这个

UPDATE some_table SET some_field = REPLACE("Column Name/String", 'Search String', 'Replace String')

例如:

UPDATE some_table SET some_field = REPLACE("this is test string", 'test', 'sample')

列/栏名称:

UPDATE some_table SET some_field = REPLACE(columnName, 'test', 'sample')

可以编写如下存储过程:

创建过程 sanitize _ < strong > TABLE ()

开始

# 用下划线替换空格

更新 SET < strong > FieldName = 替换(< strong > FieldName ,“”,“ _”)其中 < strong > FieldName 不为空;

删除点

更新 < strong > FieldName = 替换(< strong > FieldName ,“ .”,“”)其中 < strong > FieldName 不为空;

# delete (

更新 < strong > FieldName = 替换(< strong > FieldName ,“(”,“”)其中 < strong > FieldName 不为空;

# 删除)

更新 < strong > FieldName = 替换(< strong > FieldName ,“)”,“”)其中 < strong > FieldName 不为空;

# raplace or delete any char you want

#..........................

这样就可以对表进行模块化控制。

也可以通过泛化存储过程,使其与表参数一起对输入参数进行消毒

这个能帮你。

UPDATE play_school_data SET title= REPLACE(title, "&#39;", "'") WHERE title = "Elmer&#39;s Parade";

结果:

title = Elmer's Parade