【发布时间】:2015-08-04 13:08:23
【问题描述】:
我在 SQL Server 2012 中执行 SQL 语句时遇到问题,而它在 SQL Server 2008 R2 中完美运行...
错误信息是:
消息 8114,第 16 级,状态 5,第 1 行
转换数据类型 varchar 时出错 转为数字。
我想执行这条 SQL Select 语句:
Select
count(*)
from IMPORTBM
inner join ATTRIBUTE on ATT_ATTRIBUTE_ID = IMP_ATTRIBUTE_ID
where IMP_LOCATION_ID = 2
AND IMP_SERIAL_ID = 310001
AND IMP_VERSION_ID = 1
AND (
(ATT_ATTRIBUTE = 'PS_APISizing'
AND IMP_VALUE = 'C')
OR
(ATT_ATTRIBUTE = 'DTD'
AND ISNUMERIC(IMP_VALUE) = 1
AND CAST( IMP_VALUE as NUMERIC(38,19)) <= 0.469)
OR
(ATT_ATTRIBUTE = 'IOD'
AND ISNUMERIC(IMP_VALUE) = 1
AND CAST( IMP_VALUE as NUMERIC(38,19)) BETWEEN 3.684 AND 4.225)
)
您能帮我找出为什么它不适用于 SQL Server 2012 吗?
【问题讨论】:
-
请注意,如果我删除具有
ISNUMERIC函数的两个where子句之一,则该sql 语句有效。 -
这是使用实体-属性-值方案的危险之一...
-
@ErikE 我别无选择,只能使用这个解决方案...... :( 我们在这里讨论油泵的配置。
标签: sql-server-2008-r2 sql-server-2012