复制代码

为懒人提供无限可能,生命不息,code不止

人类感性的情绪,让我们知难行难
我思故我在
日拱一卒,功不唐捐
  • 首页
  • 前端
  • 后台
  • 数据库
  • 运维
  • 资源下载
  • 实用工具
  • 接口文档工具
  • 登录
  • 注册

mysql

【原创】全库所有表文本类型字段匹配,查找符合条件的表名及字段名(mysql保留字不合适)

作者: whooyun发表于: 2024-11-02 00:56

-- 1. 设置最大长度
SET SESSION group_concat_max_len = 10000;

-- 2. 设置搜索字符串
SET @search_string = '%nginx%';

-- 3. 查询生成包含搜索条件的 SQL 语句
SELECT GROUP_CONCAT(
    'SELECT DISTINCT ''', TABLE_NAME, ''' AS TableName, ''', COLUMN_NAME, ''' AS ColumnName ',
    'FROM ', TABLE_NAME, 
    ' WHERE ', COLUMN_NAME, ' LIKE "', @search_string, '"'
    SEPARATOR ' UNION '
)
INTO @sql_query
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
  AND DATA_TYPE IN ('char', 'varchar', 'text');

-- 4. 执行生成的动态 SQL 查询
PREPARE stmt FROM @sql_query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
==============================

1、输入字符串,进行全库所有表文本类型字段匹配,查找符合条件的表名及字段名

2、有SQL注入风险,尽量不开放给外部使用

3、有性能风险,数据量大,表多尽量别用