如果 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
我正在使用 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