はじめに
特定の文字で始まるテーブルをすべて削除する場合、普通なら DROP TABLE XXXX1,XXXX2… のように指定し削除します。
DROP TABLEはワイルドカードが使えないので不便です。
今回は、特定の文字で始まるテーブルを一気に削除するクエリを紹介します。
方法
下記のクエリは同じDB内に存在するテーブルを条件とします。
use dbname
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
1) use dbname の dbnameを今回削除対象テーブルが存在するDB名に変更してください。
2) ‘prefix%’の「prefix」を削除対象テーブルの特定文字列を指定してください。
上記を事項すると、特定文字列から始まるテーブルをすべて削除することができます。
参考
以下の方法でも削除できました。
SELECT 'IF OBJECT_ID(''' +TABLE_NAME + ''') IS NOT NULL BEGIN DROP TABLE [' + TABLE_NAME + '] END;'
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE '[prefix]%'