我目前正在寻找某种方法同时从 sql server 中的给定表中删除多个列。
一种方法是使用 ALTER 语句,如下所示:
Alter Table [USER_DB].[dbo].my_Table
DROP COLUMN "ID",
"Name",
"Relationship" ;
我在一些存储过程中使用上面的语句来删除列并且它工作正常。但是,当我重新运行此语句并且列已被删除时,它会产生问题。
我在 SO 上找到了一些不错的解决方案,即使删除列也不会失败。
IF EXISTS(SELECT 1
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME='my_Table'
and column_name= 'ID'
and Table_SChema='DBO')
BEGIN
ALTER TABLE my_Table
DROP COLUMN
ID
END
我尝试用上面的语句同时删除多个列,但它不起作用。
我看起来像这样。
IF EXISTS(SELECT 1
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME='my_Table'
and column_name= 'ID'
and column_name= 'Name'
and column_name ='Relationship'
and Table_SChema='DBO')
BEGIN
ALTER TABLE my_Table
DROP COLUMN
ID
,Name
,Relationship
END
您目前正在寻找具有不同值的 column_name,因此您永远不会通过测试。您必须在不同的行中搜索才能使其工作。