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

SQL CASE语句中不同数值数据类型的处理及结果类型咨询

SQL CASE语句不同数值类型的返回类型规则

对于你给出的CASE语句示例:

CASE 
    WHEN t.val > 0 
        THEN CAST(t.val AS decimal) 
    ELSE t.val 
END

当t.val为float类型时,整个CASE语句的返回结果集数据类型是decimal。

原因是SQL中CASE语句会遵循「数据类型优先级」规则来统一返回类型:

  • 当CASE的不同分支返回不同数据类型时,所有分支的结果会被隐式转换为优先级更高的那个数据类型。
  • 精确数值类型(如decimal)的优先级高于近似数值类型(如float),因此ELSE分支的float值会被自动转换为decimal类型,最终整个CASE的返回类型为decimal。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 20:32:43