将所有空格更改为所有表和字段的下划线,而不会丢失数据

时间:2013-07-19 17:29:19

标签: sql-server stored-procedures sql-server-2008-r2 sql-update

我正在学习SQL Server 2008 r2并创建了一个DB,但命名约定存在缺陷。

  1. 如何在不丢失数据的情况下将所有空格更改为所有表格和字段的下划线。
  2. 必须是存储过程还是有更好的替代方案?
  3. 非常感谢任何有关创建“代码”的帮助!

2 个答案:

答案 0 :(得分:1)

以下是@Sonam提供的准确答案的扩展。请记住,重命名后,对表的任何引用都将被破坏。

Declare @OldTableName as sysname
Declare @NewTableName as sysname
Declare TableCursor Cursor Fast_Forward For
    Select
        name
    From
        sys.tables
    Where
        name Like '% %'
    Order By
        name

Open TableCursor

Fetch Next From 
    TableCursor 
Into 
    @OldTableName

While @@FETCH_STATUS = 0
Begin
    Set @NewTableName = Replace(@OldTableName, ' ', '_')

    Print 'Renaming table:'
    Print '  Old: ' + @OldTableName
    Print '  New: ' + @NewTableName

    Exec sp_rename @OldTableName, @NewTableName

    Fetch Next From 
        TableCursor 
    Into 
        @OldTableName
End
Close TableCursor
Deallocate TableCursor

答案 1 :(得分:0)

在while循环中,运行以下代码:

        declare @oldtblname varchar(10)
    declare @newtblname varchar(10)
    select @oldtblname=name from sys.tables where name like '% %'
    set @newtblname=replace(@oldtblname,' ','_')

    exec sp_rename @oldtblname,@newtblname

while循环计数将等于名称中包含空格的表的数量。