g_str_a, g_str_ab, g_str_abc와 같은 여러 표 이름이 있습니다. SQL Server 2008에서 g_str로 시작하는 모든 테이블을 삭제하고 싶습니다.특정 문자로 시작하는 놓기 표
윌 DROP Tables like 'g_str'
도움이 될까요?
제발 도와주세요.
g_str_a, g_str_ab, g_str_abc와 같은 여러 표 이름이 있습니다. SQL Server 2008에서 g_str로 시작하는 모든 테이블을 삭제하고 싶습니다.특정 문자로 시작하는 놓기 표
윌 DROP Tables like 'g_str'
도움이 될까요?
제발 도와주세요.
다음 쿼리를 :
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
SELECT
'DROP TABLE ' + QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(name) + ';'
FROM sys.tables
WHERE name LIKE 'g\_str%' ESCAPE '\'
그런 다음 스크립트를 검토하고 실행하십시오.
완전히 자동화 된 솔루션이 필요한 경우 EXEC
으로 실행하면 concatenate the result을 단일 문자열로 사용할 수 있습니다.
당신은 동적 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;
이것은 또한 테이블로'gastro'을 시작 떨어질 것'_' 와일드 카드 문자입니다. –
@MartinSmith 고마워, 나는 너에게서 배우는 것을 결코 멈추지 않는 것 같다! 나는 내 대답을 수정했다. (답안에서 참조한 자동화 된 솔루션이 포함되어 있기 때문에 남겨둔다.) – GarethD
해답을 찾아 주셔서 대단히 감사합니다. – user1681514