将表名称与显示表匹配

问题描述 投票:17回答:2

我正在尝试从数据库中获取所有表的名称。

在我的数据库中,我有类似的表:

_table1,
_table2,
table3,
table4,
table5_xrefs

但是我只想获得开头没有_且结尾没有_xref的表。因此,在此示例中,我只需要table3和table4。

我正在使用show tables显示所有表名,并且在使用PHP来匹配正确的表名之后。我想知道是否可以仅使用MySQL查询来完成同样的操作。

mysql
2个回答
52
投票

可能,但是您必须知道从SHOW TABLES查询返回的列名称是字符串tables_in_和您的数据库名称的串联。因此对于数据库test

看起来像这样
SHOW TABLES 
      WHERE tables_in_test NOT LIKE '\_%' 
        AND tables_in_test NOT LIKE '%\_xrefs'

但是我更愿意使用information_schema数据库获取此信息:

SELECT TABLE_NAME 
  FROM information_schema.TABLES
 WHERE TABLE_SCHEMA = SCHEMA() /* = 'test'*/
   AND TABLE_NAME NOT LIKE '\_%'
   AND TABLE_NAME NOT LIKE '%\_xrefs'

0
投票

您可以在SHOW TABLES查询中use LIKE or WHERE

© www.soinside.com 2019 - 2024. All rights reserved.