将表名与show table匹配

时间:2010-12-13 18:15:52

标签: mysql

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

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

_table1, _table2, 表3, 表4, table5_xrefs

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

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

2 个答案:

答案 0 :(得分:45)

这是可能的,但您必须知道从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'

答案 1 :(得分:0)

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