如果表中的所有列都遵循SQL Server中的特定模式,则删除它们中的所有列

BIC*_*ube 3 sql-server alter-table

我有一个表,我需要删除多个遵循模式的列.假设我的表中的列名是(A1,A2,A3,B1,B2,B3),我需要删除以B(B1,B2,B3)开头的所有列.我能够在单独的查询中提取它们但仍然无法在输出上运行drop语句.我非常感谢你的帮助.请注意,我不允许使用游标部署脚本.所以纯SQL更可取.

谢谢,

Pரத*_*ீப் 6

试试这个.使用Dynamic SQL产生跌落脚本列这是继特定模式

DECLARE @sql NVARCHAR(max)=''

SELECT @sql += ' Alter table ' + TABLE_NAME + ' DROP COLUMN ' + COLUMN_NAME
FROM   INFORMATION_SCHEMA.COLUMNS
WHERE  TABLE_NAME = 'tablename'
       AND TABLE_SCHEMA = 'SchemaName'
       AND TABLE_CATALOG = 'DatabaseName'
       AND COLUMN_NAME LIKE 'B%'

--print @sql
EXEC Sp_executesql @sql 
Run Code Online (Sandbox Code Playgroud)

  • 我在`TABLE_SCHEMA ='schemaname'`的`WHERE`中添加了一个条件.否则,如果您在不同架构下拥有相同的表,则表示您遇到了麻烦.确保您在正确的数据库中也可能是一个好主意. (3认同)