我在其中一个从Access导入的表中有一个nvarchar
列。我想改成一个int。要搬到新桌子。
原始查询:
insert into members_exams_answer
select
ua.members_exams_id, ua.exams_questions_id,
ua.members_exams_answers_value, ua.members_exams_answers_timestamp
from
members_exams as me
full join
UserAnswers1 as ua on me.members_exams_username = ua.members_exams_id
full join
exams_questions as eq on eq.exams_questions_id = ua.exams_questions_id
这会引发错误:
将nvarchar值'AAAR78509883'转换为数据类型int时转换失败。
我累了:
select convert (int, UserAnswers1.members_exams_id)
from UserAnswers1
和
select cast(members_exams_id as integer) int_members_exams_id
from UserAnswers1
和
select cast (members_exams_id as int)
from UserAnswers1
所有导致相同的错误
将nvarchar值'AAAR78509883'转换为数据类型int时转换失败。
答案 0 :(得分:1)
显然,您正在尝试将字母数字数据转换为int并且无法完成。
查看您的数据为什么当它不能成为int时,为什么要坚持将它转换为int?为什么不把它作为nvarchar处理?
答案 1 :(得分:0)
您的问题可能是系统性的,因为所有数据都有一个前导的字母字符,您需要删除(并希望字母数字相同)
在这种情况下,使用子字符串去除alphas(这假定每个记录中的字母字符的名称编号)。或者使用varchar或nvarchar字段而不是int。如果领先字符的数量不同,或者它们可能是领先或尾随或其他组合,那么修复起来要比我们在互联网上描述的要复杂得多。
另一种可能性是你只是有一些不好的数据。在这种情况下,识别非数字的记录并修复它们,如果无法修复则将值清零。当您以不正确的数据类型存储数据时,这种情况经常发生。