【发布时间】:2021-09-07 07:55:15
【问题描述】:
我在尝试执行存储过程时不断收到此错误,但不确定原因:
消息 8114:
将数据类型 varchar 转换为 bigint 时出错。
请在下面查看我的 SQL 查询:
INSERT INTO StagingArea.dbo.DimStudentsTEST
(StudentCode, Module, Year, UniqueStudentID)
SELECT DISTINCT
RTRIM(S.STUDENT_Student_ID) +
RTRIM(SUBSTRING(AY.ACADEMYR_Academic_Year_Code, 3, 2) +
SUBSTRING(AY.ACADEMYR_Academic_Year_Code, 8, 2)) AS 'UniqueStudentID',
...
FROM
...
INNER JOIN
...
我相信错误正在出现是因为UniqueStudentID 我尝试在 SELECT 行周围使用 CAST & CONVERT 但仍然没有运气。也许我以错误的方式使用。我有一种感觉,这可能是因为我从中提取数据的表的列(“AY.ACADEMYR..”)不是数据类型“bigint”,因此错误消息不断出现。 “UniqueStudentID”列的数据类型是“bigint”数据类型
谁能看到问题出在哪里,或者我是否打算使用 CAST/CONVERT 函数,那么在这种情况下如何最好地使用。
非常感谢,
【问题讨论】:
-
样本数据和预期结果将帮助我们帮助您。然而,这个错误再清楚不过了。不明白怎么办?
-
SELECT中的列需要按照INSERT的正确顺序排列。名称被忽略。现在你正试图将UniqueStudentID填充到StudentCode中,这可能是不对的。 -
您的插入语句首先列出
StudentCode,但您的选择似乎首先返回 UniqueStudentID;只需在您的选择或插入列列表中修复您的列顺序。 -
@JeroenMostert 抱歉,我已确保 INSERT 和 SELECT 的顺序相同……但它与插入 (DimStudentsTEST) 的实际表的顺序不同。区别?
-
@Stu 抱歉,我已确保 INSERT 和 SELECT 的顺序相同......但它与插入 (DimStudentsTEST) 的实际表的顺序不同......有区别吗?应该在上面的查询中明确说明
标签: sql sql-server