如题,在SQL Server数据库中,如何使用SQL语句判断或者检测指定的表名是否存在呢?
Rector
2020-05-09 提问
利用INFORMATION_SCHEMA视图来检测指定的表名是否存在,如下:
INFORMATION_SCHEMA
IF (EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'TheSchema' AND TABLE_NAME = 'TheTable')) BEGIN --你的业务逻辑 END
请将TheSchema和TheTable分别替换成你对应的架构名和表名。
TheSchema
TheTable
2020-05-09 回答
使用OBJECT_ID()函数来检测指定的表名是否存在,如下:
OBJECT_ID()
IF OBJECT_ID('*objectName*', 'U') IS NOT NULL
如果要检测一张临时表是否存在,则可以使用如下的SQL语句:
IF OBJECT_ID('tempdb..#tableName') IS NOT NULL
使用sys.Objects目录视图,如下:
sys.Objects
IF EXISTS(SELECT 1 FROM sys.Objects WHERE Object_id = OBJECT_ID(N'dbo.Customers') AND Type = N'U') BEGIN PRINT '表存在' END
使用sys.Tables目录视图检测指定的表名是否存在,如下:
sys.Tables
IF EXISTS(SELECT 1 FROM sys.Tables WHERE Name = N'Customers' AND Type = N'U') BEGIN PRINT 'Table Exists' END
使用系统表sys.sysobjects来检测指定的表名是否存在,如下:
sys.sysobjects
IF EXISTS(SELECT name FROM sys.sysobjects WHERE Name = N'Customers' AND xtype = N'U') BEGIN PRINT 'Table Exists' END
码龄: 3105天
专注.NET/.NET Core