g_str_a、g_str_ab、g_str_abcのような複数のテーブル名があります。SQLServer2008でg_strで始まるすべてのテーブルを削除したいと思います。
DROP Tables like 'g_str'
助けになりますか?
スクリプトを手伝ってください。
g_str_a、g_str_ab、g_str_abcのような複数のテーブル名があります。SQLServer2008でg_strで始まるすべてのテーブルを削除したいと思います。
DROP Tables like 'g_str'
助けになりますか?
スクリプトを手伝ってください。
SELECT
'DROP TABLE ' + QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(name) + ';'
FROM sys.tables
WHERE name LIKE 'g\_str%' ESCAPE '\'
次に、スクリプトを確認して実行します。
完全に自動化されたソリューションが必要な場合は、結果を単一の文字列に連結して実行することもできます。EXEC
動的 SQL を使用できます。
DECLARE @SQL NVARCHAR(MAX) = '';
SELECT @SQL = @SQL + 'DROP TABLE ' + QUOTENAME(SCHEMA_NAME([Schema_ID])) + '.' + QUOTENAME([name]) + ';'
FROM sys.tables
WHERE Name LIKE 'g\_str%' ESCAPE('\');
EXECUTE SP_EXECUTESQL @SQL;
次のクエリは、テーブルを自動的に削除します。
BEGIN TRANSACTION
DECLARE @tmpTablesToDelete TABLE (
RowNumber INT PRIMARY KEY
,Query NVARCHAR(MAX)
)
INSERT INTO
@tmpTablesToDelete
SELECT
RowNumber = ROW_NUMBER() OVER (ORDER BY (SELECT (0)))
,'DROP TABLE '+schemas.name+'.'+objects.name AS Query
FROM
sys.objects
INNER JOIN
sys.schemas
ON
schemas.schema_id = objects.schema_id
WHERE
type = 'U' AND objects.name like 'g_str%'
DECLARE @Counter INT
SELECT @Counter = MAX(RowNumber) FROM @tmpTablesToDelete
WHILE(@Counter > 0) BEGIN
DECLARE @Query NVARCHAR(MAX)
SELECT @Query = Query FROM @tmpTablesToDelete WHERE RowNumber = @Counter
PRINT @Query
EXEC sp_executesql @statement = @Query
SET @Counter = @Counter - 1
END
COMMIT TRANSACTION