Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在不丢失数据的情况下,将所有表和字段的所有空格更改为下划线_Sql Server_Stored Procedures_Sql Server 2008 R2_Sql Update - Fatal编程技术网

Sql server 在不丢失数据的情况下,将所有表和字段的所有空格更改为下划线

Sql server 在不丢失数据的情况下,将所有表和字段的所有空格更改为下划线,sql-server,stored-procedures,sql-server-2008-r2,sql-update,Sql Server,Stored Procedures,Sql Server 2008 R2,Sql Update,我正在学习SQLServer2008R2并创建了一个数据库,但命名约定有缺陷 如何在不丢失数据的情况下将所有表和字段的所有空格更改为下划线 它必须是存储过程还是有更好的替代方案 非常感谢您在创建“代码”时提供的任何帮助 在while循环中,运行以下代码: declare @oldtblname varchar(10) declare @newtblname varchar(10) select @oldtblname=name from sys.tables wh

我正在学习SQLServer2008R2并创建了一个数据库,但命名约定有缺陷

  • 如何在不丢失数据的情况下将所有表和字段的所有空格更改为下划线
  • 它必须是存储过程还是有更好的替代方案

  • 非常感谢您在创建“代码”时提供的任何帮助

    在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循环计数将等于名称中有空格的表的数量。

    这里是对@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
    

    索引、触发器、约束等等。。。?应用程序代码?使用下划线有什么缺陷?用括号([和])包裹所有对象。使用下划线会使使用LIKE变得困难,因为它是一种通配符。感谢您的帮助@Chris H,为什么下划线会妨碍使用like?