我使用的是 SQL Server 2008 R2。
如果该列已存在于表中,我想删除该列,否则不会抛出任何错误。
尝试过:
ALTER TABLE Emp
DROP COLUMN IF EXISTS Lname;
错误:
关键字“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
我就是这样走的。
IF COL_LENGTH (N'{Your_TableName}', N'{Your_ColumnName}') IS NOT NULL
BEGIN
ALTER TABLE {Your_TableName}
DROP COLUMN {Your_ColumnName};`
END
GO
使用
IF
子句检查系统表中是否存在该列:
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;