sql - 将数据类型nvarchar转换为numeric时出错

时间:2015-10-28 02:05:59

标签: sql sql-server

此查询正常

select *  from
(select meas.Inspection_No, case 
when ISNUMERIC(meas.InspectionValue) = 1 then
    cast(meas.InspectionValue as decimal(10,2))
    else 0 End as IVEKVol, meas.InspectionValue,  spec.Name, spec.   [Description], meas.LastDate, meas.ID  from
(select ism.InspectionSpecificationMeasurementID, ism.Name, ism. [Description]  from PT_InspectionSpecification [is]
inner join PT_InspectionSpecification_Measurement ism on   [is].InspectionSpecification_No = ism.InspectionSpecification_No
where [is].PartDescription = 'Anode Dispense' and   [is].InspectionSpecification_type = 'Control Plan' and ism.Name LIKE 'I-IVEKVol    Recorded%') spec
inner join 
PT_InspectionItem_Measurement  meas on  spec.InspectionSpecificationMeasurementID =   meas.InspectionSpecificationMeasurementID) data

但是当我添加where子句"其中data.IVEKVol> 0"我收到错误"将数据类型nvarchar转换为数字"

时出错
select *  from
(select meas.Inspection_No, case 
when ISNUMERIC(meas.InspectionValue) = 1 then
    cast(meas.InspectionValue as decimal(10,2))
    else 0 End as IVEKVol, meas.InspectionValue,  spec.Name, spec.   [Description], meas.LastDate, meas.ID  from
(select ism.InspectionSpecificationMeasurementID, ism.Name, ism. [Description]  from PT_InspectionSpecification [is]
inner join PT_InspectionSpecification_Measurement ism on   [is].InspectionSpecification_No = ism.InspectionSpecification_No
where [is].PartDescription = 'Anode Dispense' and   [is].InspectionSpecification_type = 'Control Plan' and ism.Name LIKE 'I-IVEKVol    Recorded%') spec
inner join 
PT_InspectionItem_Measurement  meas on  spec.InspectionSpecificationMeasurementID =   meas.InspectionSpecificationMeasurementID) data
where data.IVEKVol > 0

1 个答案:

答案 0 :(得分:0)

由于data.IVEKVol列为NVARCHAR类型,0numberic类型

要比较两列,DBMS必须将两列类型转换为相同的类型。

如果data.IVEKVol列的数据类似:'1','22',...'',您可以尝试:

WHERE CAST(data.IVEKVol AS INT) > 0  -- Can FOAT, DOUBLE, NUMBERIC, ... instead

如果没有,我认为您的代码如下:

WHERE data.IVEKVol  > N'0' -- recommend
-- OR
WHERE data.IVEKVol  > '0'  -- not recommend
相关问题