我正在使用SQL Server 2008 R2。
如果表中已经存在该列,我想删除该列,否则不会引发任何错误。
尝试:
ALTER TABLE Emp
DROP COLUMN IF EXISTS Lname;
错误:
关键字“ IF”附近的语法不正确。
通过搜索,我知道该选项从2016年开始可用。
SQL Server 2008 R2中有哪些替代方案?
答案 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;