遇到SQL错误与我的查询无关...我该怎么做才能获取我的数据?

时间:2011-03-07 17:57:50

标签: sql-server

我正在尝试运行此查询:

select * from activity where id = 9348927 

我收到此错误:

将varchar值'04 30'转换为数据类型int时,转换失败。

请注意,当我将*更改为id时,我仍会收到此错误,这对我没有任何意义。我运行时没有收到错误:

select top 32 * from activity where id = 9348927

我很确定这意味着第33行的某些数据采用的是SQL Server不喜欢的格式。有什么方法可以让它忽略错误并显示我的数据吗?

编辑:id是varchar(10)

1 个答案:

答案 0 :(得分:3)

这通常意味着id列不是数字数据类型,而是varchar。

9348927 是一个数字(int),datatype precedence表示字符串值'04 30'被转换为int。标准SQL行为。

试试这个:

select * from activity where id = '9348927'

很明显,隐式转换意味着不会使用id上的任何索引。比较查询计划。

“解决”这个问题的最佳方法是修复数据和列类型。否则,将比较作为字符串进行,这最有可能是id。