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

为何CAST函数在CASE语句中执行失败?SQL语法问题求助

CASE语句中CAST函数语法错误的原因与解决办法

错误根源

你的CAST函数写法不符合SQL语法规范。SQL里CAST的正确格式是CAST(要转换的表达式 AS 目标数据类型),但你写成了cast height as DECIMAL(4,2)——少了包裹height的括号,数据库无法识别这个语法,所以抛出了“near "height": syntax error”的报错。

修正后的代码

select
  patient_id,
  weight,
  height,
  case 
    when weight/POWER((CAST(height AS DECIMAL(4,2))/100.0), 2) >= 30 then 1 else 0 end AS isObese
from
  patients

为什么移除CAST后能正常运行

大部分SQL数据库都支持隐式类型转换:当整数类型的height和浮点数100.0进行除法运算时,数据库会自动把height转换成浮点数来计算,不需要手动写CAST也能得到正确的小数结果,所以代码可以正常执行。

如果对计算精度有明确要求,显式使用CAST能让逻辑更清晰,避免隐式转换可能带来的精度丢失问题;如果只是普通计算,隐式转换也能满足需求。

内容的提问来源于stack exchange,提问作者Dan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 11:02:36