我在+15000个条目的表中有一个列 - 我希望复制整个列,同时保留它的值并以不同的方式命名。我正在使用Microsoft SQL Server Management Studio。
我该怎么做?
感谢。
答案 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)替换为您当前列数据类型的任何内容。