You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL执行报错:varchar值'ONWARDS'转换为int类型失败如何解决

报错原因

报错是因为IIF函数的两个返回分支数据类型不匹配导致的:

  • 条件成立时返回的LEAD(moreThanDay)是int类型
  • 条件不成立时返回的'ONWARDS'是varchar类型
    SQL Server会自动尝试将两个返回值统一转为优先级更高的int类型,转换字符串'ONWARDS'时就触发了报错。

解决方案

只需要将int类型的返回值显式转为字符串类型即可,修正后的SQL如下:

SELECT description, moreThanDay, 
CONCAT(moreThanDay+1,' - ' , 
  IIF(LEAD(moreThanDay) OVER (ORDER BY moreThanDay) > 0, 
    CONVERT(VARCHAR(10), LEAD(moreThanDay) OVER (ORDER BY moreThanDay)),'ONWARDS')) AS rangeDay 
FROM EquipmentOwnerDetention WHERE equipmentOwnerCode=@equipmentOwnerCode 

也可以用CAST函数完成转换,效果完全一致:

CAST(LEAD(moreThanDay) OVER (ORDER BY moreThanDay) AS VARCHAR(10))

显式指定两个返回分支的类型均为字符串后,IIF就不会触发隐式类型转换,拼接后的rangeDay字段也会是你需要的字符串格式。

内容的提问来源于stack exchange,提问作者Intan Nur Shafienaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 02:57:03