我希望这是关于如何使用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%'; 

声明。我在找类似的东西。


当前回答

在我的记忆中,我们总是使用OBJECT_ID样式

IF OBJECT_ID('*objectName*', 'U') IS NOT NULL 

其他回答

假设在一个数据库中有一个表t1。你想在其他数据库上运行脚本,比如-如果t1存在,那么什么都不做,创建t1。 要做到这个开放的视觉工作室,要做到以下几点:

右键单击t1,然后Script table as,然后DROP和Create To,然后新建查询编辑器

您将找到所需的查询。但是在执行该脚本之前,不要忘记注释掉查询中的drop语句,因为如果已经有一个drop语句,则您不想创建新的drop语句。

谢谢

IF EXISTS 
(
    SELECT  * 

    FROM    INFORMATION_SCHEMA.TABLES 

    WHERE   TABLE_SCHEMA = 'PutSchemaHere'     
            AND  
            TABLE_NAME   = 'PutTableNameHere'
)
IF EXISTS (
SELECT *
FROM INFORMATION_SCHEMA.TABLES
WHERE 
TABLE_CATALOG = 'Database Name' and
TABLE_NAME = 'Table Name' and 
TABLE_SCHEMA = 'Schema Name') -- Database and Schema name in where statement can be deleted

BEGIN
--TABLE EXISTS
END

ELSE BEGIN
--TABLE DOES NOT EXISTS
END

我认为下面的查询是可行的:

IF EXISTS (select * from sys.tables 
WHERE name='mytablename' )
BEGIN
     print 'table exists in the database'
END

运行这个查询来检查数据库中是否存在这个表:

IF(SELECT TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'YourTableName') IS NOT NULL
PRINT 'Table Exists';