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'
 

 

很easy吧;

 

 

 

  • 下面看看 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 就可以啦

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值