【发布时间】:2014-11-20 21:10:41
【问题描述】:
我受到 SQL Server 的挑战。我有这个简单的查询
SELET *
FROM mytable
WHERE ISNUMERIC(propertyvalue) = 1
AND CONVERT(int, CONVERT(decimal(9, 0), ISNULL(propertyvalue, 0 ))) > 0
我尝试将转换线从
CONVERT(decimal(9, 0), ISNULL(propertyvalue, 0))
到
CONVERT(decimal(9, 2), ISNULL(propertyvalue, 0))
或
CAST(ISNULL(propertyvalue, 0) AS numeric)
我正在尝试的一切都没有像以前那样奏效。我不断收到此错误
消息 8114,第 16 级,状态 5,第 1 行
将数据类型 varchar 转换为数值时出错。
关于如何解决这个问题的任何想法?
已编辑
propertyvalue 的类型为varchar(255),并且具有类似的数据
2
1.5
2.1
String
1String 456
【问题讨论】:
-
你能举一个不会转换的数据的例子吗?
-
propertyvalue - 什么类型?
-
@jpw 这个,例如:
ISNUMERIC('1e1') -
我刚刚用分析器更新了我的问题
-
Dave Gugg 的正确答案如下。在您的 select 语句的 where 子句中,因为 ISNUMERIC(...) = 1 和 CONVERT(..) > 0 条件处于同一级别,无论值是否为数字,它们都会被评估。必须先过滤非数字值。
标签: sql sql-server numeric typeconverter