如何为SQL计算列指定decimal(5,2)数据类型?
解决SQL计算列强制设置decimal(5, 2)类型的问题
你不能直接在计算列名称后指定数据类型(这是普通列的语法,不适用于计算列),需要通过CAST或CONVERT函数将计算表达式的结果显式转换为目标类型。
正确的SQL语句
ALTER TABLE tbl ADD colComputed AS CAST( (ROUND(payment, 0)) / 0.6 AS decimal(5, 2)) PERSISTED;
或者使用CONVERT函数:
ALTER TABLE tbl ADD colComputed AS CONVERT(decimal(5, 2), (ROUND(payment, 0)) / 0.6) PERSISTED;
关键注意事项
decimal(5, 2)的取值范围是-999.99到999.99,需要确认计算结果不会超出这个范围:
- 你的
payment列是decimal(5,2),最大值为999.99,ROUND后为1000,除以0.6得到约1666.67,这个值已经超过decimal(5,2)的上限999.99,执行时会触发算术溢出错误。 - 如果业务允许,可将目标数据类型调整为decimal(6,2)(最大值9999.99),避免溢出问题。
内容的提问来源于stack exchange,提问作者AngryHacker
相关产品推荐
相关产品推荐

