我想写一个查询来查找字符串,无论它存在于何处 可能会起作用的东西:
foreach(table in database) {
foreach(column in table) {
// in the end, i need to know, which columns in
// which tables that string appears.
}
}
这可能吗?
答案 0 :(得分:2)
我可以问为什么?老实说,除非你需要在运行时做,我会使用mysqldump
并使用文本编辑器进行搜索。
如果必须在运行时执行此操作,则必须动态构建内容。您可以使用“show tables
”来获取表格列表。然后,您可以对每个表使用show columns
。然后,您需要在每个列上查找文本的某种select语句(使用locate,或使用例如)。
这将是在服务器上实时运行的一个非常缓慢的过程......
答案 1 :(得分:0)
答案 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中都是微不足道的。