if exists (select 1 from sysobjects where id=object_id('表名'))
print '存在'

解决方案 »

  1.   

    declare @tbname varchar (50)
    set @tbname='a'
    if (
    select name    
        from sysobjects where name=@tbname
    ) is not null
    select 'SQL中存在'+'<'+@tbname+'>'+'表'
    else 
    select 'SQL中不存在'+'<'+@tbname+'>'+'表'
      

  2.   

    if object_id(N'要检查的表名') is null print '不存在' else print '存在'
      

  3.   

    if exists( select 1 from sysobjects where name=@表名 and xtype='U' )
        printf '有了'
      

  4.   

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[表名]')   and OBJECTPROPERTY(id, N'IsUserTable') = 1)
      printf  '嘿,还真有这个表' 
      go
      

  5.   

    检测sysobjects表中的name字段和type或者是xtype的值,即可判断表是否存在。
    在数据库内创建的每个对象在表中都占一行。name就不要说了,是表名。type和xtype有以下类型:
    C = CHECK 约束
    D = 默认值或 DEFAULT 约束
    F = FOREIGN KEY 约束
    L = 日志
    FN = 标量函数
    IF = 内嵌表函数
    P = 存储过程
    PK = PRIMARY KEY 约束(类型是 K)
    RF = 复制筛选存储过程
    S = 系统表
    TF = 表函数
    TR = 触发器
    U = 用户表
    UQ = UNIQUE 约束(类型是 K)
    V = 视图
    X = 扩展存储过程
    你可以根据自己的要求检测type或xtype的值,这里说的是用户表,就要检测type或xtype是否为“U”
    另外,我们也可以用OBJECTPROPERTY来检测。