首先,让我声明我已经阅读了各种类似的帖子,但无法确定其他发帖者在此错误消息中遇到的问题与我遇到的情况之间的相似之处。也许我没有正确搜索,但这是场景。我正在尝试在表中搜索转换为数值时小于 70 的值。有时该值可以用逗号存储(即 3,080 等),因此我有一个替换语句来删除逗号。下面obsValue
查询中的列是varchar(2000)
,我猜这可能与它有关。我的初始查询有效:
Select name, obsValue
From database.dbo.table
Where name in ('LDL')
and isnumeric(obsvalue) = 1
and cast(replace(obsvalue,',','') as decimal(18)) < 70
这会带回预期值,但这不是name
我要搜索的唯一值。其他示例包括('LDL(CALC)')
. 使用UNION
语句将允许我将查询合并在一起,但不幸的是我无法控制应用程序代码,这不是一个选项。我唯一可用的选项是使用IN
子句,因此当我搜索各种name
值时,最终查询将如下所示:
Select name, obsValue
From database.dbo.table
Where name in ('LDL', 'LDL(CALC)')
and isnumeric(obsvalue) = 1
and cast(replace(obsvalue,',','') as decimal(18)) < 70
不幸的是,这样做是我收到错误消息的地方。如果这已经在其他地方得到回答,我深表歉意。请链接,我会在信用到期的地方给予信用。