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

新手 请问

2012-12-16 
新手 请教!SQL中select (case when a.dh like (bj1% orbj2%) then round(isnull(q.sl)*14/25-c.kc,0)

新手 请教!
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后面的那串计算会隐式转换成字符串,就报错了,另外,你的括号写多了几个
[其他解释]
学习了  非常感谢楼上 各位

热点排行