(SQL语句)查询对象是不是表名

版权声明:转载请注明出处谢谢~~~~~~~ https://blog.csdn.net/ZUFE_ZXh/article/details/86673964

一、操作环境

  1. 数据库版本:sql server 2012
  2. 测试数据库:Northwind,安装方法请参考这篇文章
    Northwind表结构
    二、语法介绍
OBJECTPROPERTY(id, property)

#id表示当前数据库中对象ID的表达式
#property是一个表达式,提供id指定的对象的返回信息。

其中property可以是以下的值

属性名称 对象类型 说明 返回值 属性名称 对象类型 说明 返回值
CnstlsClustKey 约束 具有聚集索引的 PRIMARY KEY 约束 1=True 0=False CnstlsColumn 约束 单个列上的 CHECK、DEFAULT 或 FOREIGN KEY 约束 1=True 0=False
ExeclsAfterTrigger 触发器 AFTER 触发器 1=True 0=False ExeclsDeleteTrigger 触发器 DELETE触发器 1=True 0=False
IsPrimaryKey 任何架构范围内的对象 PRIMARY KEY 约束 1=True 0=False NULL=非函数,或对象ID无效 IsTable 1=True 0=False

①更多属性值及完整信息请查看官方文档
②除非另外注明,否则出现以下情况时将返回 NULL:
Ⅰ: property 不是有效的属性名称;id 不是有效的对象 ID;
Ⅱ: id 不是指定属性支持的对象类型;
Ⅲ: 调用方无权查看对象的元数据。

由上表可知,可以使用“IsTable”来验证对象是不是表名,这里以“Orders”为例

IF OBJECTPROPERTY (OBJECT_ID(N'Orders'),'ISTABLE') = 1  
   PRINT 'Orders表存在当前数据库'  
ELSE IF OBJECTPROPERTY (OBJECT_ID(N'Orders'),'ISTABLE') = 0  
   PRINT 'Orders表不存在当前数据库'  ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190128114021172.png)
ELSE IF OBJECTPROPERTY (OBJECT_ID(N'Orders'),'ISTABLE') IS NULL  
   PRINT '属性名称无效或无访问权限'

#属性说明
OBJECT_ID():表示系统分配给对应表的唯一ID。
N'Orders':N表示Unicode类型,这样可以支持不同语种的对象名;'Orders'处填写的要查询的对象名。

执行,查看结果
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/ZUFE_ZXh/article/details/86673964