Sql server 犯错误的演员

Sql server 犯错误的演员,sql-server,Sql Server,为什么这个简单的代码会给我一个错误: 将varchar值“3.0”转换为数据类型时,转换失败 内部的 SQL Server不希望将看起来像十进制的数字字符串转换为整数,因为可能会丢失精度。您可以使用round函数来欺骗它: select cast(round(value,0) as INT) from CV3BasicObservation (nolock) where cast(round(value,0) as INT) >= 110 注意:必须对字段value的所有实例执行此

为什么这个简单的代码会给我一个错误:

将varchar值“3.0”转换为数据类型时,转换失败 内部的


SQL Server不希望将看起来像十进制的数字字符串转换为整数,因为可能会丢失精度。您可以使用round函数来欺骗它:

select cast(round(value,0) as INT)  
from CV3BasicObservation  (nolock)
where cast(round(value,0) as INT) >= 110

注意:必须对字段
value
的所有实例执行此操作,在这些实例中,您将显式地将其转换为
int
,或者隐式地将其转换为
int
类型值进行比较。

SQL Server不希望将看起来像十进制的数字字符串转换为整数,因为可能会丢失精确您可以使用round函数来欺骗它:

select cast(round(value,0) as INT)  
from CV3BasicObservation  (nolock)
where cast(round(value,0) as INT) >= 110


注意:您必须对字段
value
的所有实例执行此操作,其中您显式地将其转换为
int
,或者隐式地将其转换为
int
类型值进行比较。

列的数据类型是什么?有点奇怪
cast('3.0'为int)
不起作用,但你为什么要在varchar列中存储数字?我不明白这个问题,错误消息已经告诉你你需要知道的一切,它无法将varchar值“3.0”转换为数据类型int。显然,这就是为什么代码会给你一个错误。我必须如何获得大于110的值,我完全理解错误消息
列的数据类型是什么?有点奇怪
cast('3.0'为int)
不起作用,但你为什么要在varchar列中存储数字?我不理解这个问题,错误消息已经告诉你你需要知道的一切,它无法将varchar值“3.0”转换为数据类型int。很明显,这就是为什么该代码会给您一个错误。关于如何获得大于110的值,我完全理解错误消息您必须对查询中使用该字段的所有实例执行此操作。请参阅对我答案的编辑。我确实添加了这一点,即使这样,我也得到了相同的错误-将数据类型varchar转换为float时出错。它给出错误的值在0.2中,并且您的某些字段中必须有其他非数字数据。这是此列中不同类型的值0.2 134 4.9 93 29 80 5.5您必须对所有您需要的实例执行此操作在查询中使用了该字段。请参阅对我答案的编辑。我确实添加了这一点,即使在那时,我也会收到相同的错误-将数据类型varchar转换为float时出错。它给出错误的值在0.2中,并且您的某些字段中必须有其他非数字数据。这是第0.2 134 4.9 93 29 80 5.5列中不同类型的值