日期:2014-05-17  浏览次数:20598 次

新手 请教!
SQL中

select (case when a.dh like ('bj1%' or'bj2%') then round(isnull(q.sl)*14/25-c.kc,0) else '无法计算' end ) from table a...

得到以下错误
消息 8114,级别 16,状态 5,第 2 行
从数据类型 varchar 转换为 numeric 时出错。
 

请问各位以上CASE WHEN  表达式应该怎么写???

------最佳解决方案--------------------
select case when a.dh like 'bj1%' OR a.dh like 'bj2%' then CONVERT(VARCHAR(10),round(isnull(q.sl)*14/25-c.kc,0)) else '无法计算' end  from table a

------其他解决方案--------------------
select (case when a.dh like ('bj1%' or'bj2%') then cast(round(isnull(q.sl)*14/25-c.kc,0) as varchar(20)) else '无法计算' end ) 
------其他解决方案--------------------
因为else后面的字符串,所以最终then后面的那串计算会隐式转换成字符串,就报错了,另外,你的括号写多了几个
------其他解决方案--------------------
学习了  非常感谢楼上 各位