[英]sql - Error converting data type nvarchar to numeric
this query works fine 这个查询工作正常
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
but when i add the where clause "where data.IVEKVol > 0" i get the error "Error converting data type nvarchar to numeric" 但是当我添加where子句“ 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
Because data.IVEKVol
column is NVARCHAR
type, 0
is numberic
type 因为data.IVEKVol
列是NVARCHAR
类型,所以0
是numberic
类型
To compare two columns, DBMS must convert two columns type to a same type. 要比较两列,DBMS必须将两列类型转换为相同类型。
If data.IVEKVol
column have data like: '1', '22',... '' you can try: 如果data.IVEKVol
列的数据类似:'1','22',...'',您可以尝试:
WHERE CAST(data.IVEKVol AS INT) > 0 -- Can FOAT, DOUBLE, NUMBERIC, ... instead
If not, I think your code like: 如果没有,我认为您的代码如下:
WHERE data.IVEKVol > N'0' -- recommend
-- OR
WHERE data.IVEKVol > '0' -- not recommend
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.