将表名与show table匹配

Kat*_*tie 15 mysql

有人可以帮我解决这个mysql问题吗?我正在尝试从db获取所有表名.

在我的数据库中,我有以下表:

_table1,_table2,table3,table4,table5_xrefs

但是我想在开头只得到没有_的表,最后没有_xref.所以在这个例子中我只需要table3和table4.

我正在使用show tables显示所有表名称,并在我使用php匹配正确的表名后.我想知道我是否可以只使用mysql查询来做同样的事情.

dev*_*ler 50

这是可能的,但您必须知道从SHOW TABLES查询返回的列名是字符串tables_in_和数据库名称的串联.对于数据库,它看起来像这样test:

SHOW TABLES 
      WHERE tables_in_test NOT LIKE '\_%' 
        AND tables_in_test NOT LIKE '%\_xrefs'
Run Code Online (Sandbox Code Playgroud)

但我更愿意使用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'
Run Code Online (Sandbox Code Playgroud)


rik*_*rik 5

您可以在 SHOW TABLES 查询中使用 LIKE 或 WHERE

  • 例如,对于那些来这里举例的人来说,“显示类似“%mail%”的表格;”。 (6认同)