查询mysql中表名包含'xxx',然后varchar类型字段包含'xxx'的所有表

# 执行此操作时,可能会受到 GROUP_CONCAT_MAX_LEN 的限制,导致生成的查询语句过长。可以通过以下命令临时增加该限制
SET SESSION group_concat_max_len = 1000000;
# 数据库名
SET @db_name = 'plmcbiz';
# 要查询的信息
SET @search_value = 'LC0026';

SELECT GROUP_CONCAT(query SEPARATOR ' UNION ALL\n') AS full_query
FROM (
         SELECT CONCAT(
                        'SELECT DISTINCT ''', table_name, ''' AS table_name FROM `', table_name,
                        '` WHERE ', column_checks
                ) AS query
         FROM (
                  SELECT
                      table_name,
                      GROUP_CONCAT(CONCAT('`', column_name, '` = ''', @search_value, '''') SEPARATOR ' OR ') AS column_checks
                  FROM information_schema.columns
                  WHERE table_schema = @db_name
                    AND (table_name LIKE '%project%' OR table_name LIKE '%process%')
                    AND data_type IN ('char', 'varchar', 'text', 'tinytext', 'mediumtext', 'longtext')
                  GROUP BY table_name
              ) AS filtered
         WHERE column_checks IS NOT NULL
     ) AS final;