如何在SHOW TABLES语句中排除以old结尾的表?正则语法咨询
用正则排除以
old结尾的表(适配表查询语句) 不同数据库的语法略有差异,核心是通过正则匹配包含目标字符、同时排除以old结尾的表名:
MySQL 写法
直接在SHOW TABLES后加WHERE子句,结合正则匹配和反向排除:
SHOW TABLES IN your_database WHERE Tables_in_your_database REGEXP '.*match.*' AND Tables_in_your_database NOT REGEXP 'old$';
.*match.*:对应原语句的*match*,匹配表名任意位置包含match的表old$:$锚定字符串结尾,精准匹配以old结尾的表NOT REGEXP用于排除符合该规则的表
PostgreSQL 写法
PostgreSQL没有SHOW TABLES的直接正则过滤,可通过查询系统表实现:
SELECT table_name FROM information_schema.tables WHERE table_schema = 'your_database' AND table_name ~ '.*match.*' AND table_name !~ 'old$';
~是PostgreSQL的正则匹配运算符,!~表示不匹配
核心正则逻辑
不管用哪种数据库,核心正则规则是:
- 匹配包含
match:.*match.*(.匹配任意字符,*表示匹配0次或多次) - 排除以
old结尾:old$($强制匹配字符串末尾)
内容的提问来源于stack exchange,提问作者Roelant
相关产品推荐
相关产品推荐

