首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

请问 case when then 的判断有关问题

2012-06-03 
请教 case when then 的判断问题尺寸 这个字段是字符型。为什么第一条查询语句会提示“将数据类型 nvarchar

请教 case when then 的判断问题
尺寸 这个字段是字符型。
为什么第一条查询语句会提示“将数据类型 nvarchar 转换为 numeric 时出错”,而第二条却可以正常查询?不是已经使用when then else语句了吗?

第一条:

SQL code
select * from 采购单 order by case when isnumeric(尺寸及要求)=1 then convert(numeric(18,5),尺寸及要求) else 尺寸及要求 end



第二条:
SQL code
select * from 采购单 order by case when isnumeric(尺寸及要求)=1 then convert(numeric(18,5),尺寸及要求) end,case when isnumeric(尺寸及要求)=0 then 尺寸及要求 end


望指点一下,谢谢。

[解决办法]
第一句用了一个case when 导致了第一种情况下结果是numeric类型的,else情况下是varchar类型的所以不能在一列显示
第二句用了两个case when互相不影响,所以就不会报错,是在2列上显示的。
第一句改一下
SQL code
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的类型必须一致.

[解决办法]
SQL code
order by case when isnumeric(尺寸及要求)=1 then convert(numeric(18,5),尺寸及要求) else convert(sql_variant,尺寸及要求) end 

热点排行