语句为什么出错? 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时须有条件限制
------解决方案--------------------
这是因为当等于'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 结果表