問題

如何刪除以給定字串開頭的所有表?

我認為這可以用一些動態SQL和INFORMATION_SCHEMA表來完成.

  最佳答案

如果資料庫中有一個以上,您可能需要修改查詢以包含所有者。

 DECLARE @cmd varchar(4000)
DECLARE cmds CURSOR FOR
SELECT 'drop table [' + Table_Name + ']'
FROM INFORMATION_SCHEMA.TABLES
WHERE Table_Name LIKE 'prefix%'

OPEN cmds
WHILE 1 = 1
BEGIN
    FETCH cmds INTO @cmd
    IF @@fetch_status != 0 BREAK
    EXEC(@cmd)
END
CLOSE cmds;
DEALLOCATE cmds
 

這比使用生成指令碼加執行的兩步方法更清潔.但指令碼生成的一個優點是它使您有機會在實際執行之前檢查所有要執行的內容.

我知道,如果我打算對生產資料庫這樣做,我會盡可能小心。

編輯程式碼樣本修復.

  相同標籤的其他問題

sqlsql-serverdynamic-sql