如何使用Microsoft SQL Server的值复制整个列?

时间:2010-10-01 18:54:17

标签: sql sql-server ssms

我在+15000个条目的表中有一个列 - 我希望复制整个列,同时保留它的值并以不同的方式命名。我正在使用Microsoft SQL Server Management Studio。

我该怎么做?

感谢。

6 个答案:

答案 0 :(得分:4)

创建一个新列然后

UPDATE YourTable
SET NewColumn = OldColumn

答案 1 :(得分:3)

ALTER TABLE Boo
Add [NewColumnName] [datetype]
GO

Update Boo
Set NewColumnName = OldColumn
GO

答案 2 :(得分:2)

为什么不是计算列?

ALTER TABLE Foo ADD NewColumnName AS OldColumnName

此alos适用于您想要将数字更改为文本,例如

ALTER TABLE Foo ADD NewColumnName AS RIGHT('ABC000000' + CAST(OldColumnName AS varchar(10)), 10)

1       ABC0000001
2       ABC0000002
3       ABC0000003
4       ABC0000004
5       ABC0000005

答案 3 :(得分:2)

根据您对原始问题的评论,我了解您正在尝试在ColumnA中保留25个不同的值,同时将新ColumnB转换为包含10个不同的值。我想你可以做类似下面的代码。修改我的数据类型以符合您的情况。

declare @ColumnAConverter table (
    ColumnA nvarchar(max), 
    ColumnB nvarchar(max)
)

insert into @ColumnAConverter
    (ColumnA, ColumnB)
    select 'A', '1'
    union all
    select 'B', '1'
    union all
    select 'C', '2'
    /* ...continue for all 25 values in the original ColumnA */

update yt
    set ColumnB = c.ColumnB
    from YourTable yt
        inner join @ColumnAConverter c
            on yt.ColumnA = c.ColumnA

答案 4 :(得分:0)

INSERT into tbl (colname,fld1,fld2,fld3,fld4)  
 SELECT 'NEWNAME' as colname, fld1,fld2,fld3,fld4  
 FROM tbl where uniqid=[SOMEVAL]

答案 5 :(得分:0)

BEGIN TRANSACTION

   ALTER TABLE myTable
       Add newcol NVARCHAR(8)
   GO 

   UPDATE myTable
       Set newcol = oldcol
   GO 

COMMIT TRANSACTION

将NVARCHAR(8)替换为您当前列数据类型的任何内容。