我想在这个问题的答案中做同样的事情: Check if table exists 但我想检查是否存在任何表,而不仅仅是一个特定的表而不是遍历表名,我的意思是如果数据库中有任何表。 根据API,getTables()的第三个参数,
tableNamePattern - 表名模式;必须匹配存储在数据库中的表名
所以看起来tableName应该在数据库中完全匹配。有没有更好的方法来查找数据库中是否存在任何表?或者我真的必须遍历一系列表名并调用:
getConnection().getMetaData().getTables(null, null, "table", null).next();
每次迭代?
答案 0 :(得分:2)
您可以通过查询表INFORMATION_SCHEMA.TABLES
确定是否存在任何表:
select *
from INFORMATION_SCHEMA.TABLES;
如果要在名称中查找特定模式,可以添加where
子句:
WHERE table_name like YOURPATTERNHERE
答案 1 :(得分:1)
为了补充一点,请使用IF EXISTS(),如下所示:
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%MY TABLE%') BEGIN --Do Something here END