こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

複数テーブルの一括削除

複数のテーブルを一括して削除(DROP TABLE)したいのですが、
テーブル名を一つ一つ記述しないといけないのでしょうか?
テーブル名の頭文字は全てTから始まります。

ご教示の程宜しくお願い致します。

投稿日時 - 2008-08-28 16:52:51

QNo.4285545

困ってます

質問者が選んだベストアンサー

システムビューを使って、クエリを動的に生成し、実行する方法があります。
・SQL Server 2005の場合
DECLARE @sql varchar(max)
SELECT @sql=ISNULL(@sql,'')+'DROP TABLE '+name+';'
FROM sys.objects
WHERE name LIKE 'T%' and type='U'
EXEC (@sql)

・SQL Server 2000の場合は以下ですが、varchar(max)が使えないので、あまりに対象テーブルが多いとSQLが切れます。その場合は条件を調整して数回に分けて実行するといいでしょう
(EXEC (@sql1+@sql2+@sql3)のようにやる手はありますが、煩雑になるので割愛しました)

DECLARE @sql varchar(8000)
SELECT @sql=ISNULL(@sql,'')+'DROP TABLE '+name+';'
FROM sysobjects
WHERE name LIKE 'T%' and xtype='U'
EXEC (@sql)

いずれの場合もいきなり実行するのではなくて、EXEC (@sql)のところをprint @sqlに書き換えて生成されたスクリプトを確認してから実行してください。

投稿日時 - 2008-08-28 17:23:12

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(1)

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-