zoukankan      html  css  js  c++  java
  • SQL SERVER如何删除以xx开头的所有表

    SQL SERVER如何删除以xx开头的所有表

    SQL SERVER如何删除以xx开头的表呢?运行下面的sql脚本就可以实现(任选一种)。

     方法一:运行下面的存储过程可以实现SQLServer如何删除以xx开头的所有表 

       注:将下方的table_name like 'xx_%' 换成你的表即可 (多一个下换线)

    --将下方的table_name like 'xx_%' 换成你的表即可
    --如果表名含有中文,就需要用nvarchar 和 N''
    declare cur cursor
    read_only
    for select distinct table_name from information_schema.columns where table_name like N'xx_%'
    
    declare @name nvarchar(40),@sql nvarchar(1000)
    open cur
    
    fetch next from cur into @name
    while (@@fetch_status =0)
       begin
       set @sql ='DROP TABLE ' + @name
       exec (@sql)
       fetch next from cur into @name
    end
    
    close cur
    deallocate cur
    go
    

    执行完成后,刷新一下表,就可以看到原来的表已经被彻底删除掉了。  

     补充说明
    1,英文SQLServer里有中文表名,会提示错误: Incorrect syntax near '?'. 

    解决办法: --如果报错:Incorrect syntax near '?'.  ,只要将varchar(40)改为nvarchar(40),即可解决。

    2,如果英文SQLServer里有中文表名,可执行成功但是刷新后xx开头的所有表都还在。

     解决办法: --执行成功但没有删除任何中文名的表, 只要将 like 'XX_%' 改为 like N'XX_%',即可解决。

    方法二:运行下面的sql脚本可以实现SQLServer如何删除以xx开头的所有表 

       注:将下方的table_name like 'xx_%' 换成你的表即可 (多一个下换线)

    --如果表名含有中文,就需要用nvarchar 和 N''
    DECLARE @strSQL NVARCHAR(MAX)
    SET @strSQL=''
    SELECT @strSQL=@strSQL+'drop table '+[name] from sysobjects 
    WHERE [type]='U' and (([name] like N'XX_%') )
    EXEC(@strSQL)
    

      

     

    ··

    ·

    人生只若初见................
  • 相关阅读:
    HDU 2594 扩展kmp模板题
    HDU 1358 简单kmp
    HDU 3336 扩展kmp
    SPOJ SUBLEX 求第k小子串
    Codeforces 235C
    HDU 4622 Reincarnation
    HDU 4622 求解区间字符串中的不同子串的个数
    [LeetCode] Length of Last Word 字符串查找
    [LeetCode] Sudoku Solver 解数独,递归,回溯
    [LeetCode] Longest Common Prefix 字符串公有前序
  • 原文地址:https://www.cnblogs.com/05-hust/p/15405800.html
Copyright © 2011-2022 走看看