我们可以将数据从一个列复制到另一个具有不同数据类型的列吗?

Posted

技术标签:

【中文标题】我们可以将数据从一个列复制到另一个具有不同数据类型的列吗?【英文标题】:can we copy data from on column to another with different datatypes? 【发布时间】:2012-08-09 11:10:09 【问题描述】:

我正在尝试这样做,但我不确定是否可行。

我正在尝试使用转换函数复制另一个表的一个tblRecords1(nvarchar) of table1 to tblRecords(bigint) 的数据。

但它给出了错误。有没有可能?

这样可以确保 tblRecords1 中的值都是数值。

更新

我这样做如下:

INSERT INTO tblRecords (current_job_title,Highest_Education_Stream) SELECT convert(bigint,current_job_title),convert(bigint,Highest_Education_Stream) FROM tblRecords1

那我做错了什么?

更新 我忘记了空值。他们正在制造问题。所以我按照以下方式完成了它:

INSERT INTO tblRecords (current_job_title,Highest_Education_Stream)

 SELECT current_job_title = case when current_job_title is null then 0 else convert(bigint,current_job_title) end,
               Highest_Education_Stream=case when Highest_Education_Streamis null then 0 else convert(bigint,current_job_title) end,
 FROM tblRecords1

【问题讨论】:

显示您的代码并告诉我们您遇到了什么错误。但是是的,这是可能的。 【参考方案1】:

按照下面给出的操作

插入 tblRecords (current_job_title,Highest_Education_Stream) SELECT cast(bigint as "datatype of current_job_title"), cast(bigint 作为“Highest_Education_Stream 的数据类型”)来自 tblRecords1

用实际数据类型替换“current_job_title 的数据类型”和“Highest_Education_Stream 的数据类型” 并用于空值检查

ISNULL(变量,0)

【讨论】:

【参考方案2】:

您可以转换,前提是您要转换的类型可以合理地匹配要转换的类型。所以你可以这样做:

declare @from varchar(20) = '1000000'
declare @to bigint

select @to = convert(bigint, @from)
select @to

见CAST and CONVERT on MSDN

【讨论】:

以上是关于我们可以将数据从一个列复制到另一个具有不同数据类型的列吗?的主要内容,如果未能解决你的问题,请参考以下文章

将 mySql 数据库表复制到另一个具有不同表结构的数据库表

ABAP 中内表的复制

将具有 LONG RAW 列的表中的数据从一个数据库复制到另一个数据库

将同一列的行复制到 Pandas Dataframe 中的不同索引。将一个月的数据复制到另一个

使用 liquibase 将数据从一个数据库复制到另一个数据库

如何在同一个表中将数据从一列复制到另一列?