如果 SQL Server 2008 r2 中存在则删除列

Drop column if exists in SQL Server 2008 r2

我正在使用 SQL Server 2008 R2。

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

尝试过:

ALTER TABLE Emp 
DROP COLUMN IF EXISTS Lname;

错误:

Incorrect syntax near the keyword 'IF'.

通过搜索得知,这个选项从 2016 年开始可用。

SQL Server 2008 R2 中的备选方案是什么?

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

来自MSDN social 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;

我是这样走的

IF COL_LENGTH (N'{Your_TableName}', N'{Your_ColumnName}') IS NOT NULL
BEGIN
    ALTER TABLE {Your_TableName}
    DROP COLUMN {Your_ColumnName};`
END 
GO