2016-05-26 68 views
0

我可以从表中获取数据,但得到低于错误的数据。数据类型转换问题

Msg 245,Level 16,State 1,Line 1将 varchar值“0 0”转换为数据类型int时转换失败。

下面是我使用

enter image description here

+0

你有一个varchar。它包含3个字符 - 两个用空格分开的“0”。没有一种明智的方法将其转换为“int”。这就是错误告诉你的,这就是我们可以告诉你的 - 你需要弄清楚哪些列包含这些数据,这些数据是否有效,为什么要将它转换为一个'int',如果这是一个明智的转换,那么您希望将其转换为什么实际值(如果需要,还指定其他可能的输入和预期输出)。我们不能为你做这些事情。 –

+0

基表中没有这种类型的数据。另外,当我删除group by子句的case语句时,同样工作正常 – user3304978

+0

拒绝数据存在不是解决问题的健康策略。作为提示,数据可能位于以下列之一 - currentbalance,highcredit_sanctionedamount,mob,amountoverdue或customerid - 这些是在查询中明显转换为int的位置使用的列。 –

回答

0

'0 0' 的代码是不是一个整数。这就是错误发生的原因。两个零之间的空格使其成为无效整数。

+0

在基准表 – user3304978

+0

中没有这种类型的数据出现在错误的确切位置。将您的代码添加为文本。 –

+0

group by clause的case语句,因为当我删除该部分时,同样工作正常 – user3304978

0

fetch into varchar变量。然后检查值并重新分配给int变量。 例如 DECLARE @tmpVal VARCHAR, @intVal INT ... 读取到@tmpVal 如果(@tmpVal = '0 0') SET @intVal = 0 别的 SET @intVal = CAST(@tmpVal作为int)