SQL server 2005 判断表是否存在的方法详解

发布时间:2020-07-05编辑:脚本学堂
本文详细介绍了,在sql server 2005中判断表是否存在的方法,有需要的朋友参考学习下。

本节内容:
SQL server 2005 判断表是否存在
 
新建立一个表:(#表示临时表)
 

复制代码 代码示例:
CREATE TABLE #d1(item INT)

建立后可以在系统数据库中的tempdb看到这张临时表
 
下面判断
 

复制代码 代码示例:

IF(SELECT OBJECT_ID('#d1')) IS NULL

   PRINT '#d1 not exists.'
ELSE
   PRINT '#d1 exists'
 

输出 #d1 not exists.

错误原因:
当前数据库不是tempdb,而是其他的数据库,所以不存在

解决方法:
 

复制代码 代码示例:
IF(SELECT OBJECT_ID('tempdb.dbo.#d1')) IS NULL
    PRINT '#d1 not exists.'
ELSE
   PRINT '#d1 exists'
 

来看下表:sysobjects:
 

复制代码 代码示例:
 select * from sysobjects ;

会显示很多内容,包括建立的表;
因此,还可以从sysobjects中name列判断是否有你想要的表;
 

复制代码 代码示例:
select * from yourdb.dbo.sysobjects where name='tablename'

当然,需要判断语句,next
 

复制代码 代码示例:
IF EXISTS(SELECT * FROM sysobjects WHERE name='#d1')
  PRINT 'table exists'
 ELSE
  PRINT 'not exists'

这里在sysobjects并没有加上数据库限定(即 yourdb.dbo.sysobjects),因而输出结果还是 not exists,这里是由于当前数据库不是tempdb;

综合应用两者:
 

复制代码 代码示例:
if exists (select * from tempdb.dbo.sysobjects where id = object_id('tempdb.dbo.#d1'))

条件判断之后,就可以动态建立表了,加上:
drop table 和 create table 这样的语句即可。