检查SQLServer中是否存在表

检查SQLServer中是否存在表

我希望这是关于如何使用SQL语句检查SQLServer 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%';

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


汪汪一只猫
浏览 1127回答 3
3回答

PIPIONE

对于这样的查询,最好使用INFORMATION_SCHEMA视野。这些视图(主要是)在许多不同的数据库中都是标准的,很少在不同版本之间进行更改。若要检查表是否存在,请使用:IF (EXISTS (SELECT *                   FROM INFORMATION_SCHEMA.TABLES                   WHERE TABLE_SCHEMA = 'TheSchema'                   AND  TABLE_NAME = 'TheTable'))BEGIN     --Do StuffEND

哈士奇WWW

还请注意,如果出于任何原因需要检查临时表,则可以这样做:if OBJECT_ID('tempdb..#test') is not null  --- temp table exists

ibeautiful

我们总是使用OBJECT_ID风格我记得很久了IF OBJECT_ID('*objectName*', 'U') IS NOT NULL
打开App,查看更多内容
随时随地看视频慕课网APP