在Mysql db中,我有很多数据库,比如
msgnotify_0,msgnotify_1....msgnotify_20,msgnotify_21.......msgnotify_98,msgnotify_99.
我只想获取数据库名称,包括
msgnotify_0,msgnotify_1....msgnotify_20,msgnotify_21,msgnotify_48,msgnotify_49
不包括
msgnotify_50,msgnotify_51.....msgnotify_98,msgnotify_99。
执行 show databases
会给我 db 中的所有数据库,
执行 show databases like 'msgnotify_%'
也给我所有的数据库。
如何获取仅有的前 50 个数据库名称?
使用正则表达式?怎么办?
最佳答案
所有数据库信息都保存在一个名为 INFORMATION_SCHEMA.SCHEMATA
的表中,因此您可以使用它来获取任何您想要的东西
select
SCHEMA_NAME from INFORMATION_SCHEMA.SCHEMATA
where
substring_index(SCHEMA_NAME,'_',-1) < 50
and SCHEMA_NAME like 'msgnotify_%';
这是一个测试用例
mysql> show databases ;
+--------------------+
| Database |
+--------------------+
| information_schema |
| db_1 |
| db_2 |
| db_49 |
| db_50 |
| db_51 |
| mysql |
| performance_schema |
| test |
+--------------------+
mysql> select SCHEMA_NAME from INFORMATION_SCHEMA.SCHEMATA
where substring_index(SCHEMA_NAME,'_',-1) < 50
and SCHEMA_NAME like 'db_%';
+-------------+
| SCHEMA_NAME |
+-------------+
| db_1 |
| db_2 |
| db_49 |
+-------------+
关于mysql - 如何使用正则表达式在 mysql 中显示数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31740529/