【发布时间】:2012-01-17 07:27:30
【问题描述】:
以下类似于我需要将字段转换为类型并对其进行评估的查询,并且我想忽略具有无法转换为目标数据类型的数据的行。
select * from MyTable
where case when isnumeric(SomeField) = 1 then SomeField else null end > 1
因此,在上面的示例中,我能够测试大于 1 的值,同时避免在 SomeField 中存在任何非数字字段时会导致的转换错误。我对这个解决方案没意见,但我只是想知道是否有更好的方法来做到这一点?
【问题讨论】:
-
您对输入该数据库的数据有任何控制权吗?只是好奇为什么您必须首先担心数据类型。
-
这是一个将数据从csv文件导入sql表的应用程序。因此,我会根据目标字段的数据类型检查源字段中是否有任何无效数据(将被截断,数字字段中的字符数据等),并在 datagridview 中隐藏这些记录用户可以在导入前进行调整。
-
但是,是的,如果我根据我提供的信息阅读您的回复,我也会投票赞成 :) 好吧,无论如何我都会投票赞成,因为这是常识,但不幸的是不能适用在这种情况下。
-
您是否尝试过查看查询分析器的输出?喜欢:stackoverflow.com/questions/3983386/…
-
你的意思是得到执行计划?这是 100% 的表扫描。性能还可以,但我只是好奇是否有任何我忽略的内置 sql 约定或更简洁的方式来执行此操作。还是你的意思是别的?
标签: sql sql-server performance