转换失败(SQL Server 2008)

时间:2012-04-03 03:46:39

标签: sql sql-server sql-server-2008 tsql

我有一个专栏

StudentData varchar

示例值:

Not regular
90
15.2
55
4
0
>15
regular
35

我有条件找出StudentData值大于10的所有学生 或者有一个NULL值。

当我尝试转换时,失败说转换失败。如何获得这些价值?我期待结果集像

studentdata
90
15.2
55

35

请建议。

2 个答案:

答案 0 :(得分:1)

我认为你正在寻找这个:

select * from t
where studentdata is null or 
  (isnumeric(studentdata) = 1 and CAST(studentdata AS float) > 10)

无论如何,您应该考虑在该列中存储适当的信息,而不是混合使用。

如果您对此有任何疑问,请与我联系。

答案 1 :(得分:1)

您可以使用isnumeric(),但它有一些问题。 IsNumeric() Broken? Only up to a point.

类似的东西应该适合你。

select *
from YourTable
where
  case when isnumeric(studentdata+'E0') = 1
    then cast(studentdata as float)
    else 0
  end > 10