检查SQL Server中是否存在表

我希望这是关于如何使用SQL语句检查SQL Server 2000/2005中是否存在表的最终讨论。

当你回答Google时,你会得到很多不同的答案。 是否有官方/落后和前瞻兼容的方式?

以下是两种可能的方式。 两者中哪一个是标准/最好的做法?

第一种方式:

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视图。 这些视图(大部分)是跨许多不同数据库的标准,很少从版本变为版本。

要检查表是否存在,请使用:

IF (EXISTS (SELECT * 
                 FROM INFORMATION_SCHEMA.TABLES 
                 WHERE TABLE_SCHEMA = 'TheSchema' 
                 AND  TABLE_NAME = 'TheTable'))
BEGIN
    --Do Stuff
END

另外请注意,如果出于任何原因需要检查临时表,您可以这样做:

if OBJECT_ID('tempdb..#test') is not null
 --- temp table exists

只要我记得,我们总是使用OBJECT_ID样式

IF OBJECT_ID('*objectName*', 'U') IS NOT NULL 
链接地址: http://www.djcxy.com/p/2759.html

上一篇: Check if table exists in SQL Server

下一篇: How to check if a column exists in a SQL Server table?