【发布时间】:2023-03-10 09:37:01
【问题描述】:
我想找到一个字符串value在给定数据库中搜索所有表的所有列。
我已经编写了这个查询来获取 mariadb 数据库中的所有列和表名:
SELECT TABLE_NAME , COLUMN_NAME
FROM information_schema.`COLUMNS`
WHERE TABLE_NAME IN
(SELECT TABLE_NAME
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'my_database')
但我没有设法查询上面找到的所有列。
我想用 LIKE 运算符搜索一个字符串,比如“mystring”。 例如
SELECT *
FROM TABLE_NAME.COLUMN_NAME
WHERE COLUMN_NAME LIKE '%mystring%'
版本:
正如一些人建议的那样,我查看this post,但我仍然无法让它在所有表格中搜索。
我尝试了以下方法:
SET @Pattern = '%mystring%';
SELECT @q := concat ('SELECT * FROM table1 WHERE concat (', group_concat(column_name), ', "") LIKE "', @Pattern, '"')
FROM information_schema.columns c
WHERE table_name = 'table1';
PREPARE st FROM @q;
EXECUTE st;
但我不知道如何合并两个 sn-ps 以将 table1 更改为 SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'my_database'
【问题讨论】:
-
'%mystring%'是部分表名? -
@tcadidot0: 不,
%mystring%将是在数据库中所有表的所有列的值中查找的搜索模式。 -
你使用 PHPMyAdmin 吗?如果是,并且这是一个非自动搜索要求,那么您可以使用其中的数据库级别搜索选项。 hostpapasupport.com/search-database-using-phpmyadmin
-
你的问题不清楚:是要在特定列的内容中查找字符串还是要查找与字符串匹配的列名?