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
相关产品推荐
相关产品推荐

