如何使用MySQL从数量不确定的列和表中搜索和替换字符串?

如何使用MySQL从数量不确定的列和表中搜索和替换字符串?,mysql,Mysql,使用纯MySQL,我想从中搜索“oldString”,并用“newString”替换“oldString”,表和列的数量不确定。在information_schema中搜索我的表前缀,将显示我需要查找的所有表 我进行了以下试验: 在信息\u架构上查询数据库表前缀 SELECT TABLE_SCHEMA, TABLE_NAME FROM information_schema.TABLES WHERE table_name LIKE '%mysite_www%' 结果: +----------

使用纯MySQL,我想从中搜索“oldString”,并用“newString”替换“oldString”,表和列的数量不确定。在information_schema中搜索我的表前缀,将显示我需要查找的所有表

我进行了以下试验: 在信息\u架构上查询数据库表前缀

SELECT TABLE_SCHEMA, TABLE_NAME 
FROM information_schema.TABLES WHERE table_name LIKE  '%mysite_www%'
结果:

+-----------------+----------------------------+
| TABLE_SCHEMA    | TABLE_NAME                 |
+-----------------+----------------------------+
| myDB            | mysite_www_moredata        |
| myDB            | mysite_www_data            |
| myDB            | mysite_www_urls            |
| myDB            | mysite_www_pages           |
| myDB            | mysite_www_feedback        |
| myDB            | mysite_www_comments        |
| myDB            | mysite_www_links           |
+-----------------+----------------------------+
Query results yields about 200 tables or so.
我想获取结果,筛选特定字符串,并用新字符串替换它。将“oldString”替换为“newString”

UPDATE tableN SET columnN = REPLACE (columnN, '%oldString%', 'newString') WHERE URL LIKE '%oldString%';
对于每个表名称,搜索任何列,如“%oldString%”

WHERE CONCAT(table1, table2, ... tableN) LIKE 'oldString';
对于每个列结果,将“oldString”更新为“newString”

UPDATE tableN SET columnN = REPLACE (columnN, '%oldString%', 'newString') WHERE URL LIKE '%oldString%';

我需要在纯MySQL中这样做,因为这将是一个存储过程。非常感谢您的任何帮助或提示

因此,通过使用信息模式,您可以查询表和列以获得结果。我也做过类似的回答

本质上是查询信息_模式,让MySQL为您构建SQL。上面的链接应该会让你走

更新:

您可以使用以下查询来构造所有Update语句

SELECT CONCAT('UPDATE ',TABLENAME, 'SET ', COLUMN_NAME,'= REPLACE (',COLUMN_NAME, '''%oldString%'', ''newString'') WHERE URL LIKE ''%oldString%''')
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME LIKE  '%somecriteria%' AND COLUMN_NAME LIKE '%somecriteria%'

将这些结果字符串插入临时表,然后使用所述技术循环执行字符串的行

谢谢,通过信息模式排序是答案的一部分。