mysql 查询指定库中的所有表的所有字符串字段的内容是否包括某些字符
前置语句
查询指定库中的所以表和所有字段:

SELECT a.TABLE_NAME '表名', ORDINAL_POSITION '顺序', COLUMN_NAME '字段', DATA_TYPE '类型', CHARACTER_OCTET_LENGTH '字节长', IF(COLUMN_KEY = 'PRI', "√", "")'主键', IF( EXTRA = 'auto_increment', "√", "" )'自增长', IF(IS_NULLABLE = 'YES', "√", "")'空', CHARACTER_SET_NAME '编码', COLUMN_DEFAULT '默认值', COLUMN_COMMENT '说明' FROM information_schema. COLUMNS a join information_schema.TABLES b on a.TABLE_NAME=b.TABLE_NAME WHERE b.Table_SCHEMA='database_name'

DROP PROCEDURE IF EXISTS `search_alltbl_allcol_ofkeyword`; DELIMITER ;; CREATE DEFINER=`skip-grants user`@`skip-grants host` PROCEDURE `search_alltbl_allcol_ofkeyword`() BEGIN declare sqlStr varchar(200) default ''; declare TABLENAME,COLUMNNAME,DATATYPE varchar(20); declare done int default false; declare cur cursor for select a.TABLE_NAME,COLUMN_NAME,DATA_TYPE FROM information_schema. COLUMNS a join information_schema.TABLES b on a.TABLE_NAME=b.TABLE_NAME WHERE b.Table_SCHEMA='getgoodwebsite'; declare continue HANDLER for not found set done = true; open cur; repeat fetch cur into TABLENAME,COLUMNNAME,DATATYPE; if not done then if DATATYPE='varchar' THEN #set @sqlStr='select * from '+TABLENAME+' where '+COLUMNNAME+' = ?'; select DATATYPE; #PREPARE stmt FROM @sqlStr; #EXECUTE stmt USING @keyWord; #deallocate prepare stmt; end if; end if; until done end repeat; close cur; END ;; DELIMITER ;
存储过程:
DROP PROCEDURE IF EXISTS `search_alltbl_allcol_ofkeyword`; DELIMITER ;; CREATE DEFINER=`skip-grants user`@`skip-grants host` PROCEDURE `search_alltbl_allcol_ofkeyword`() BEGIN declare sqlStr varchar(200) default ''; declare TABLENAME,COLUMNNAME,DATATYPE varchar(50); declare done int default false; declare cur cursor for select a.TABLE_NAME,COLUMN_NAME,DATA_TYPE FROM information_schema. COLUMNS a join information_schema.TABLES b on a.TABLE_NAME=b.TABLE_NAME WHERE b.Table_SCHEMA='数据库名'; declare continue HANDLER for not found set done = true; open cur; repeat fetch cur into TABLENAME,COLUMNNAME,DATATYPE; if not done then if DATATYPE='varchar' or DATATYPE='text' or DATATYPE='mediumtext' or DATATYPE='longtext' or DATATYPE='char' THEN set @keyWord:='敏感词汇'; set sqlStr=concat('select count(*) into @recordcount from `',TABLENAME,'` where `',COLUMNNAME,'` like ''%',@keyWord,'%'''); #select sqlStr; set @sqlcounts := sqlStr; prepare stmt FROM @sqlcounts; execute stmt; deallocate prepare stmt; if @recordcount>0 THEN SELECT concat(@sqlcounts); end IF; end if; end if; until done end repeat; close cur; END ;; DELIMITER ;
问题1、
报错:The user specified as a definer ('skip-grants user'@'skip-grants host') does not exist grant all privileges on *.* to 'skip-grants user'@'skip-grants host' identified by "."
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2020-07-07 VS Code 调试 Angular 和 TypeScript 的配置