Sql-Server-2016

有沒有一種簡單的方法可以刪除多個表(但不是每個表)中的所有記錄?

  • March 27, 2020

所以我前幾天“修復”了一個問題,這導致了新問題的滾雪球(想像一下)。我有一大組表用作流向其他系統的許多導入/導出過程的臨時表。每個表都標有“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

引用自:https://dba.stackexchange.com/questions/262809