我想从一个MySQL数据库的所有表的所有字段搜索一个给定的字符串,可能使用语法为:

SELECT * FROM * WHERE * LIKE '%stuff%'

有可能做这样的事情吗?


当前回答

这是检索所有列和表的最简单的查询

SELECT * FROM information_schema.`COLUMNS` C WHERE TABLE_SCHEMA = 'YOUR_DATABASE'

在phpMyAdmin中,可以通过搜索选项卡搜索所有表或名称中有特定字符串的表。

有良好的查询…\ ^ ^ /

其他回答

您可以查看information_schema模式。它包含所有表和表中所有字段的列表。然后,您可以使用从该表中获得的信息运行查询。

涉及的表包括SCHEMATA、tables和COLUMNS。有一些外键,这样您就可以在模式中准确地构建表的创建方式。

我使用Union将查询串在一起。不知道这是不是最有效的方法,但确实有效。

SELECT * FROM table1 WHERE name LIKE '%Bob%' Union
SELCET * FROM table2 WHERE name LIKE '%Bob%';

我已经使用HeidiSQL做到了这一点。 它不容易找到,但按Ctrl+Shift+F它会显示“表格工具”对话框。然后选择要搜索的内容(全库到单表),输入“要查找的文本”值,点击“查找”。我发现它惊人的快(不到一分钟870MiB db)

我不知道这是否只在最近的版本中,但右键单击Navigator窗格中的Tables选项会弹出一个名为Search Table Data的选项。这将打开一个搜索框,您可以在其中填写搜索字符串并点击搜索。

您确实需要在左侧窗格中选择要搜索的表。但如果你按住shift键一次选择10个表,MySql可以在几秒钟内处理并返回结果。

对于任何正在寻找更好选择的人!:)

你可以用

SHOW TABLES;

然后获取这些表中的列(在循环中)

SHOW COLUMNS FROM table;

然后用这些信息创建很多很多的查询,如果你需要的话,你也可以UNION这些查询。

但这对数据库的影响非常大。特别是如果你在做LIKE搜索。