我有一个专栏
StudentData (varchar
)
示例值:
Not regular
90
15.2
55
4
0
>15
regular
35
我有条件找出StudentData
值大于10的所有学生
或者有一个NULL值。
当我尝试转换时,失败说转换失败。如何获得这些价值?我期待结果集像
studentdata
90
15.2
55
35
请建议。
答案 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