我希望这是关于如何使用 SQL 语句检查 SQL Server 2000/2005 中是否存在表的最终讨论。
当你用谷歌搜索答案时,你会得到很多不同的答案。是否有官方/向后和向前兼容的方式来做到这一点?
这里有两种可能的方法。两者中的哪一个是标准/最佳方式?
第一种方式:
IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE' AND TABLE_NAME='mytablename') SELECT 1 AS res ELSE SELECT 0 AS res;
第二种方式:
IF OBJECT_ID (N'mytablename', N'U') IS NOT NULL SELECT 1 AS res ELSE SELECT 0 AS res;
MySQL 提供了简单的
SHOW TABLES LIKE '%tablename%';
陈述。我正在寻找类似的东西。
对于这样的查询,最好使用INFORMATION_SCHEMA视图。这些视图(大部分)是跨许多不同数据库的标准视图,并且很少在版本之间更改。
INFORMATION_SCHEMA
要检查表是否存在,请使用:
IF (EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'TheSchema' AND TABLE_NAME = 'TheTable')) BEGIN --Do Stuff END