sql >> Databasteknik >  >> RDS >> Sqlserver

Släpp alla tabeller vars namn börjar med en viss sträng

Du kan behöva ändra frågan så att den inkluderar ägaren om det finns mer än en i databasen.

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

Detta är renare än att använda en tvåstegsmetod för generera skript plus körning. Men en fördel med skriptgenereringen är att den ger dig chansen att granska hela det som kommer att köras innan det faktiskt körs.

Jag vet att om jag skulle göra detta mot en produktionsdatabas skulle jag vara så försiktig som möjligt.

Redigera Kodexempel fixat.



  1. Hur man använder Coalesce i MySQL

  2. MySQL användarhantering

  3. Hur man kombinerar resultaten av två frågor i SQL

  4. Hur kan vi definiera utdataparameterstorlek i lagrad procedur?