如何确定 SQL Server 2008 中的 SQL Server 数据库中是否存在表?

Ami*_*aei 13 sql-server-2008

如何确定 SQL Server 2008 中的 SQL Server 数据库中是否存在表?

Mil*_*s D 18

如果您查询 sysobjects 表,请使用如下查询

SELECT * FROM sysobjects WHERE xtype = 'U' AND name = 'yourTableName'
Run Code Online (Sandbox Code Playgroud)

xtype = 'U' 是用户表

然后你可以把这是一个 IF EXISTS 语句

IF EXISTS (SELECT * FROM sysobjects ...)
BEGIN
    ' do your stuff here if it exists
END 
Run Code Online (Sandbox Code Playgroud)

  • +1 请务必注意,自 SQL Server 2005 以来,Microsoft 已将此类功能移至动态管理视图 (DMV)。这在技术上可行,但 Microsoft 现在建议为此使用 sys.tables DMV。如果存在(SELECT * FROM sys.tables WHERE type = 'U' AND name = 'yourTableName')。在功能上,你的陈述和我的陈述做的完全一样。只想提一下 DMV。要了解有关 DMV 的更多信息,请查看文档 http://msdn.microsoft.com/en-US/library/ms188754%28v=SQL.105%29.aspx (5认同)

小智 12

这是另一种找到它的方法

IF OBJECT_ID('tablename') IS NULL
PRINT 'Table Does not Exist'
Run Code Online (Sandbox Code Playgroud)

  • 例如,这不会检测到同名的视图吗?也许存储过程之类的? (2认同)