Sql 在Visualstudio中将varchar值转换为数据类型int错误时,转换失败
查询: 上述查询在SSMS中运行良好,但当我从visual studio执行时,会抛出一个错误: 将varchar值“414084H”转换为数据类型int时,转换失败 我猜LearnerID列—数据类型varchar12有问题 我尝试将学习者ID转换为INT和convertin,学习者ID但没有帮助 非常感谢您的帮助 谢谢Sql 在Visualstudio中将varchar值转换为数据类型int错误时,转换失败,sql,reporting-services,ssrs-2008,type-conversion,varchar,Sql,Reporting Services,Ssrs 2008,Type Conversion,Varchar,查询: 上述查询在SSMS中运行良好,但当我从visual studio执行时,会抛出一个错误: 将varchar值“414084H”转换为数据类型int时,转换失败 我猜LearnerID列—数据类型varchar12有问题 我尝试将学习者ID转换为INT和convertin,学习者ID但没有帮助 非常感谢您的帮助 谢谢 Ar您的LearnerID值414084H的末尾包含一个字母。因此无法将其转换为整数 如果格式始终相同,则可以从选择中的值中仅选择前6个字符,这样转换将成功: SELECT
Ar您的LearnerID值414084H的末尾包含一个字母。因此无法将其转换为整数 如果格式始终相同,则可以从选择中的值中仅选择前6个字符,这样转换将成功:
SELECT CAST(College_Year AS VARCHAR(10)),
Learner_Id,
Forename_1,
Surname,
sum(Possible_Duration) AS Possible_Duration,
sum(Present_Duration) AS Present_Duration,
CASE
WHEN sum(Present_Duration) = 0 THEN 0
ELSE sum(Present_Duration) / sum(Possible_Duration)
END AS Attendance
FROM dbo.IM_AT_Attendance_vw
WHERE Session_date >=
(SELECT ACYR_Start_Date
FROM dbo.ACYR
WHERE dbo.IM_fnCurrentACYR() = ACYR_College_year)
AND Session_Date <=
(SELECT ACYR_End_Date
FROM dbo.ACYR
WHERE dbo.IM_fnCurrentACYR() = ACYR_College_year)
AND Session_Date NOT IN
(SELECT Holiday_Date
FROM IM_EFC_Holidays)
AND Possible = 1
AND month(Session_Date) = month(DATEADD(mm, -1, GETDATE()))
AND Learner_ID = @Learner_ID
GROUP BY College_Year,
Learner_Id,
Forename_1,
Surname
ORDER BY Surname,
Attendance
请为您的应用程序添加更多上下文question@blackbishop-请参见上文。您可以尝试在存储过程中直接将字符串转换为int。所以:选择CASTSUBSTRINGLearnerID,0,7作为整数。我刚刚注意到,为了考虑所有数字,您必须作为参数7而不是6发送。错误:将varchar值“4B0446”转换为数据类型int时,转换失败。当然,它不起作用,值4B0446的格式与另一个值414084H的格式不同,因此无法使用公式进行概括。您应该考虑为什么需要将该值转换为整数,因为它显然不是整数。它是一根绳子。因此,您应该修改c代码中的变量类型。不可能出现相同的错误,因为两个值现在都是字符串,因此没有错误:将varchar值转换为数据类型int时转换失败。可能会出现错误。您能否添加您现在收到的确切错误以及调用存储过程的c代码示例?我相信您可以找到有权访问您的应用程序的人。它可以是任何程序员,而不一定是编写特定报告的人。从sql中没有什么可以做的,它确实是一个需要在c代码中完成的更改,因为这个字段显然是一个字符串,而不是一个int。
select SUBSTRING(LearnerID, 0, 6)