我有一个用于解析的临时表,#rp
.
#rp
包含一nvarchar(max)
列,#rp.col8
,其中包含精确到小数点后两位的正数和负数,例如“1234.26”。
我可以运行以下查询并得到一组转换后的值:
select * from
(
select CONVERT(decimal(18,2),rp.col8) as PARSEAMT
from #rp
where
--#rp filtering criteria
)q
但是,当我尝试以PARSEAMT = 0
下列方式查询时,我得到标准的“8114,将数据类型 varchar 转换为数字时出错。”:
select * from
(
select CONVERT(decimal(18,2),col8) as PARSEAMT
from #rp
where
--#rp filtering criteria
)q
where q.PARSEAMT = 0
如果没有该where
子句,查询运行良好并生成预期值。
我还尝试过其他子句,例如where q.PARSEAMT = 0.00
and where q.PARSEAMT = convert(decimal(18,2),0)
。
我在比较中做错了什么?