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

话语为什么出错? select case when 结果='8' then cast(结果 as int)+1 else 结果 end

2013-12-11 
语句为什么出错? selectcasewhen 结果ɸ' then cast(结果 as int)+1else 结果 endfrom 结果表s

语句为什么出错? select case when 结果='8' then cast(结果 as int)+1 else 结果 end from 结果表
select  case  when 结果='8' then cast(结果 as int)+1  else 结果 end  from 结果表

此语句为什们出错? 错误信息 转换为数据类型为 int 的列时发生语法错误。


结果

ABC
DDD
8
100
CCC



[解决办法]
是的,因为int比字符的优先级高。
[解决办法]
结果字段为字符型的,当转换成int时须有条件限制
[解决办法]

引用:
select  case  when 结果='8' then cast(结果 as int)+1  else 结果 end  from 结果表

此语句为什们出错? 错误信息 转换为数据类型为 int 的列时发生语法错误。


结果

ABC
DDD
8
100
CCC


这是因为当等于'8'时,你加1了,也就是一个int型,而如果不等于8,比如‘ABC’,那么就还是'ABC',

这个时候,在结果集中同时存在int型和字符串,sql server会优先把字符串转化为整数int型,显然'ABC'是无法转化为int型,所以就报“ 错误信息 转换为数据类型为 int 的列时发生语法错误。”

再加个转化就行,改成这样就行了哈:

select  case  when 结果='8' then cast(cast(结果 as int)+1 as varchar)  else 结果 end  from 结果表

热点排行