以下类似于我需要将字段转换为类型并对其进行评估的查询,并且我想忽略具有无法转换为目标数据类型的数据的行。
select * from MyTable
where case when isnumeric(SomeField) = 1 then SomeField else null end > 1
因此,在上面的示例中,我能够测试大于1的值,同时避免在SomeField中存在任何非数字字段时可能导致的转换错误。我对这个解决方案没问题,但我只是想知道是否有更好的方法来做到这一点?
答案 0 :(得分:1)
我使用查询中的where条件得到错误 “超出最大整数值” 。虽然,我的数据库中有一些非常大的数字,但这可能不适合你。
下面列出了处理大数字的替代方案:
where isnumeric(SomeField) = 1 and convert(numeric(18,0),SomeField) > 1
isnumeric()检查必须在 convert()之前。
表现明智,他们差不多。
答案 1 :(得分:1)
我得出的结论是没有更好的方法来做到这一点。