sql - 从多个表中删除列
解决方案
此代码将输出必要的 SQL 以进行更改。
STRING_AGG
用于对列和表进行分组。QUOTENAME
用于在名称周围正确放置方括号。
SELECT STRING_AGG(
N'ALTER TABLE ' + QUOTENAME(SCHEMA_NAME(t.schema_id)) + N'.' + QUOTENAME(t.object_id) + N'
' + c.ColumnSql, N'
')
FROM sys.tables t
CROSS APPLY (
SELECT ColumnSql = STRING_AGG(CAST(N'DROP COLUMN ' + QUOTENAME(c.name) AS nvarchar(max), N'
')
FROM sys.columns c
WHERE c.object_id = t.object_id
AND c.name IN (
'ID_Integracion_CodBodega',
'ID_Integracion_FechaUltRep',
'ID_Integracion_ControlTrigger',
'ID_Integracion_CodBodega_Origen'
)
) c
您可以使用
DECLARE @sql nvarchar(max) = (
SELECT STRING_AGG.....
);
EXEC(@sql);
我警告您不要使用INFORMATION_SCHEMA
,因为它只是为了兼容性。
推荐阅读
- python - 错误:关机后无法注册 atexit
- google-oauth - Facebook/Google 登录 API,如何确保用户不是机器人
- python - 如何使用云运行python api从大查询表中读取大数据以及系统配置应该是什么?
- php - Laravel 如何让 Auth 类在不同的模型而不是用户上执行函数
- python - Kivymd:无法在 Scrollview 中添加多个文本字段和按钮
- sql - SQL FOR XML 属性和值
- php - 使用 FTP 类从 codeigniter 2 中的 ftp 下载文件
- node.js - 对于 next.js proejct 的纱线工作区子包,我应该使用 commonjs 还是 es 模块?
- javascript - Ckeditor 5 Pagination,使用自定义按钮浏览页面
- javascript - Vue
在 iOS 上滑回时不起作用