编写MariaDB/MySQL存储过程返回匹配指定模式的表名
MariaDB/MySQL 匹配指定模式表名的存储过程实现
核心思路
通过查询information_schema.TABLES系统表获取元数据,该表存储了数据库中所有表的详细信息。只需过滤当前schema(用DATABASE()函数自动获取)且表名匹配传入模式的记录即可。
存储过程示例
DELIMITER // CREATE PROCEDURE sp_get_matching_tables(IN v_pattern VARCHAR(255)) BEGIN -- 查询当前数据库中表名匹配指定模式的表 SELECT TABLE_NAME AS matching_table FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME LIKE v_pattern ORDER BY TABLE_NAME; END // DELIMITER ;
使用方法
调用存储过程时传入匹配模式(支持%匹配任意长度字符、_匹配单个字符):
-- 示例:查询所有以user开头的表 CALL sp_get_matching_tables('user%'); -- 示例:查询所有名称包含log的表 CALL sp_get_matching_tables('%log%');
注意事项
- 执行存储过程的用户需拥有
information_schema.TABLES表的查询权限 - 若要匹配
%或_本身,需用反斜杠转义(如\%) - 无匹配表时,存储过程返回空结果集,不会抛出错误
内容的提问来源于stack exchange,提问作者Timothy Ryan
相关产品推荐
相关产品推荐

