SQL将数据从一个表插入到另一个表/数据类型错误

SQL将数据从一个表插入到另一个表/数据类型错误,sql,sql-server,insert-into,bigint,Sql,Sql Server,Insert Into,Bigint,我正在尝试将数据从一个SQL表插入到另一个SQL表。问题是这些列具有不同的数据类型。当我使用Cast()时,仍然会收到以下错误消息: [Msg 8114,16级,状态5,第3行将数据类型varchar转换为bigint时出错。] 表1列的数据类型为bigint或int,而表2列的数据类型为varchar。有什么建议吗 我的问题是: INSERT INTO Table1 ([RowId], [Scenario], [Entity],

我正在尝试将数据从一个SQL表插入到另一个SQL表。问题是这些列具有不同的数据类型。当我使用Cast()时,仍然会收到以下错误消息:

[Msg 8114,16级,状态5,第3行将数据类型varchar转换为bigint时出错。]

表1列的数据类型为bigint或int,而表2列的数据类型为varchar。有什么建议吗

我的问题是:

INSERT INTO Table1 
        ([RowId],
         [Scenario],
         [Entity],
         [Project],
         [TimePeriod])

SELECT Cast([ProjectMgrID] as bigint), Cast('ACT' as bigint), 
Cast('APP' as bigint), Cast([Project] as bigint), Cast('201801' as int)
FROM Table2
用这个

INSERT INTO Table1 
        ([RowId],
         [Scenario],
         [Entity],
         [Project],
         [TimePeriod])

SELECT Cast([ProjectMgrID] as bigint), Cast([ACT] as bigint), 
Cast([APP] as bigint), Cast([Project] as bigint), Cast('201801' as int)
FROM Table2
您正在这里将字符串转换为bigint
Cast('ACT'作为bigint),

Cast('APP'作为bigint)
您应该在
[]

Cast('ACT'作为bigint)
中给出列名。这试图将文本字符串“ACT”转换为bigint,我猜您的意思是使用Cast([ACT]作为bigint)。您希望如何在
整数
术语中表示'ACT'和'APP'。除了上述注释之外,为什么要使用
Cast(201801'作为int)
?只需键入
201801
(注意,没有单独的报价)。这将被视为
int
。这让我想知道其他列的初始数据类型是什么;如果您编写的查询将文本值整型转换为整型,则可能不需要
转换它们。可能是时候退一步阅读文档或快速浏览youtube了数据类型指南。您试图将字符串值
'ACT'
转换为整数,这意味着您需要更多的基础知识。我不确定是否需要否决票。我不认为OP缺乏研究,也不认为这个问题没有用;只是他们缺乏对t的理解结果,他犯了错误,做出了错误的选择。