-1

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

  1. 如何在不丢失数据的情况下将所有表格和字段的所有空格更改为下划线。
  2. 它必须是存储过程还是有更好的选择?

非常感谢创建“代码”的任何帮助!

4

2 回答 2

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
于 2013-07-19T20:43:04.633 回答
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 循环计数将等于名称中包含空格的表的数量。

于 2013-07-19T18:50:09.067 回答