Sql-Server-2016
有沒有一種簡單的方法可以刪除多個表(但不是每個表)中的所有記錄?
所以我前幾天“修復”了一個問題,這導致了新問題的滾雪球(想像一下)。我有一大組表用作流向其他系統的許多導入/導出過程的臨時表。每個表都標有“TO_xxxx”。我想清除每個“TO_”表中的所有記錄。有沒有辦法構造一個刪除語句來清除“TO_”表中的所有記錄?
是不是很簡單
Delete from TO_%
還是還有更多?總共大約有 80 個“TO_”表,所以我想在手動完成所有內容之前先在這裡發布。如果您能提供幫助,我將不勝感激。謝謝。
系統是 SQL Server 2016。
借用這個答案,哪些
drops
表有一個共同的前綴,你可以使用這樣的東西DECLARE @sql NVARCHAR(MAX) = N''; SELECT @sql += ' DELETE FROM ' + QUOTENAME(s.name) + '.' + QUOTENAME(t.name) + ';' FROM sys.tables AS t INNER JOIN sys.schemas AS s ON t.[schema_id] = s.[schema_id] WHERE t.name LIKE 'to[_]%'; PRINT @sql; -- EXEC sp_executesql @sql;
上面的範例列印
delete
命令。當您準備好實際執行它時,取消註釋EXEC