如何在所有表和所有列中查找字符串?

时间:2011-12-22 16:15:01

标签: mysql

我想写一个查询来查找字符串,无论它存在于何处 可能会起作用的东西:

foreach(table in database) {
   foreach(column in table) {
      // in the end, i need to know, which columns in
      // which tables that string appears.
   }
}

这可能吗?

3 个答案:

答案 0 :(得分:2)

我可以问为什么?老实说,除非你需要在运行时做,我会使用mysqldump并使用文本编辑器进行搜索。

如果必须在运行时执行此操作,则必须动态构建内容。您可以使用“show tables”来获取表格列表。然后,您可以对每个表使用show columns。然后,您需要在每个列上查找文本的某种select语句(使用locate,或使用例如)。

这将是在服务器上实时运行的一个非常缓慢的过程......

答案 1 :(得分:0)

是的,这是可能的。但我不认为你可以在纯SQL中做到这一点;你最好用一些脚本语言来做,比如PHP或shell脚本。

答案 2 :(得分:0)

我敢说,这是不可能的(当前)MySQL,因为元数据(如列名)和数据(如字段值)不能是同一查询的一部分。

特别是

SELECT Field from (DESCRIBE <tablename>)

会出错,

SELECT Field from (SHOW FIELDS FROM <tablename>)

DECLARE flds CURSOR FOR DESCRIBE <tablename>

在存储过程中。

这就是说INSIDE MYSQL是不可能的 - 它在PHP和freinds中都是微不足道的。