mysql - 如何使用正则表达式在 mysql 中显示数据库

标签 mysql regex database

在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/

相关文章:

java - 正则表达式:必须以 'id-' 开头但不能等于但可以以 'id-bitcoin' 开头

c# - 如何通过正则表达式识别文本中的段落?

python - 正则表达式向前看和向后看

sql - MySQL,需要一些关于我的比赛查询的性能建议

database - 如何列出所有 Informix 数据库名称

mysql - 如何对 mySQL 全文表进行分段?

mysql - 服务器是J2EE Web服务,MySQL是数据库服务器,客户端和J2EE服务器位于不同时区

php - MySQL - WHERE 子句中的自定义错误

mysql - 使用一个数据和查询更新多个表

mysql - 从两个不同的表创建表