请教 case when then 的判断问题
尺寸 这个字段是字符型。
为什么第一条查询语句会提示“将数据类型 nvarchar 转换为 numeric 时出错”,而第二条却可以正常查询?不是已经使用when then else语句了吗?
第一条:
select * from 采购单 order by case when isnumeric(尺寸及要求)=1 then convert(numeric(18,5),尺寸及要求) else 尺寸及要求 end
select * from 采购单 order by case when isnumeric(尺寸及要求)=1 then convert(numeric(18,5),尺寸及要求) end,case when isnumeric(尺寸及要求)=0 then 尺寸及要求 end
select * from 采购单 order by case when isnumeric(尺寸及要求)=1 then CAST(convert(numeric(18,5),尺寸及要求) AS 20) else 尺寸及要求 end
[解决办法]
因为 case when A else B end
A与B的类型必须一致.
[解决办法]
order by case when isnumeric(尺寸及要求)=1 then convert(numeric(18,5),尺寸及要求) else convert(sql_variant,尺寸及要求) end