如果SQL Server 2008 r2中存在

时间:2018-07-24 06:42:10

标签: sql-server sql-server-2008-r2

我正在使用SQL Server 2008 R2。

如果表中已经存在该列,我想删除该列,否则不会引发任何错误。

尝试:

ALTER TABLE Emp 
DROP COLUMN IF EXISTS Lname;

错误:

  

关键字“ IF”附近的语法不正确。

通过搜索,我知道该选项从2016年开始可用。

SQL Server 2008 R2中有哪些替代方案?

2 个答案:

答案 0 :(得分:5)

IF EXISTS (SELECT 1
               FROM   INFORMATION_SCHEMA.COLUMNS
               WHERE  TABLE_NAME = 'Emp'
                      AND COLUMN_NAME = 'Lname'
                      AND TABLE_SCHEMA='DBO')
  BEGIN
      ALTER TABLE Emp
        DROP COLUMN Lname
  END
GO

答案 1 :(得分:1)

在MSDN社交documentation中,我们可以尝试:

IF EXISTS (SELECT 1 FROM sys.objects o
          INNER JOIN sys.columns c ON o.object_id = c.object_id
          WHERE o.name = 'Emp' AND c.name = 'Lname')
ALTER TABLE dbo.Emp DROP COLUMN Lname;