如果字段存在于临时表中,则删除该字段



>我有一个临时表,如果该字段已存在,我需要删除该临时表中的字段。

我正在尝试将查询与非临时表一起使用,这是工作,但不适用于临时表。

create table #mytemp (
fieldA int null,
fieldB int null
)
IF EXISTS ( SELECT 1
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = '#mytemp'
AND COLUMN_NAME = 'fieldA'
AND TABLE_SCHEMA = 'DBO' )
BEGIN ALTER TABLE #mytemp DROP COLUMN fieldA END

你快到了。您需要检查tempdb而不是连接到的数据库中的对象。此外,临时表具有后缀以确保它们具有唯一的名称,因此您需要一个LIKE

CREATE TABLE #mytemp (fieldA int NULL,
fieldB int NULL);
IF EXISTS (SELECT 1
FROM tempdb.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME LIKE N'#mytemp%'
AND COLUMN_NAME = N'fieldA'
AND TABLE_SCHEMA = N'dbo' )
BEGIN
ALTER TABLE #mytemp DROP COLUMN fieldA;
END;

最新更新