Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 获得';转换失败。。将varchar值设置为int';如果我删除ORDERBY子句_Sql Server 2008_Debugging - Fatal编程技术网

Sql server 2008 获得';转换失败。。将varchar值设置为int';如果我删除ORDERBY子句

Sql server 2008 获得';转换失败。。将varchar值设置为int';如果我删除ORDERBY子句,sql-server-2008,debugging,Sql Server 2008,Debugging,几天以来,我遇到了一个奇怪的问题,这使我无法运行任何查询 SELECT Empid as EmployeeId, EmpName, CustomerName as 'Distributor Name', Customer.RSCode, markedFor as 'Date Marked For', CASE WHEN Present = 0 THEN 'ABSENT' ELSE 'PRESENT' END AS Attendance, Reason FROM EmployeeAttendanc

几天以来,我遇到了一个奇怪的问题,这使我无法运行任何查询

SELECT Empid as EmployeeId, EmpName,
CustomerName as 'Distributor Name', Customer.RSCode, markedFor as 'Date Marked For',
CASE WHEN Present = 0 THEN 'ABSENT' ELSE 'PRESENT' END AS Attendance, Reason
FROM EmployeeAttendance_Backup ea, Customer, Employee e, EmployeeMaster em
WHERE 
ea.DistID = cast(Customer.RSCode as int)
AND e.EmployeeMasterID=em.Id
AND ea.Empid = em.EmployeeID
--ORDER BY markedFor
如果我运行上述查询,我会得到~160k-190k条记录,然后它会以错误终止:

转换varchar值“Present”时转换失败 500004862'至数据类型int

我甚至没有选择字段,因为它会抛出此错误

如果启用了ORDER BY子句,则不会获得任何记录,并且出现以下错误:

将varchar值“Hirannaiah K R”转换为数据类型int时,转换失败

EmployeeAttention_备份表有近20万条记录。这会引起什么问题吗?我不知道如何寻找解决办法。我试着查看这个特定员工的考勤表,检查是否有一些记录保存不正确,但事实并非如此。对该特定员工的Employee和EmployeeMaster执行相同的操作


我从哪里开始查找问题?

尝试
当ISNUMERIC(Customer.RSCode)=1时ea.DistID=CASE,然后强制转换(Customer.RSCode为INT)END
。虽然您最好修复您的设计,这样就不会在该列中存储混合数据类型。可能重复@MartinSmith,谢谢您的回答。你的建议没有改变任何事情。此外,模式是这样的,在需要的地方有varchar,在其他地方有int。因此,您提供的链接也没有帮助:(哪个列包含值
'Present 500004862'
'Hirannaiah K R'
?您需要在引用该列的地方执行类似操作。很可能您得到了对
int
的隐式转换,并且您的模式看起来很混乱。如果您不这样混合数据类型,您将不会遇到这种情况。)问题。您发布的代码中没有
fieldid
,也没有任何东西会导致
EmpName
的隐式强制转换。您需要查看相等条件中使用的列中的值-除非您引用的任何表可能是事实视图?在这种情况下,您可能需要对它们运行
sp_refreshview
。基础表的架构更改有时会导致这种奇怪的错误。