decimal:转为十进制数
速查结论
decimal(expr) 是 Spark SQL 中用于将表达式结果强制转换为 DECIMAL(高精度十进制数)类型的函数。
语法
decimal(expr)
decimal(expr, precision, scale)
参数说明
| 参数 | 说明 |
|---|---|
| expr | 需要转换为 DECIMAL 类型的表达式或值 |
| precision | 可选,总位数(整数位 + 小数位),默认值为 10 |
| scale | 可选,小数位数,默认值为 0 |
示例
> SELECT decimal('123.45');
123
> SELECT decimal('123.456', 10, 2);
123.46
> SELECT decimal(100);
100
常见报错与避坑指南
- 精度溢出:当输入值的整数位数超过
precision - scale时,会抛出 ArithmeticException。请根据数据的实际范围合理设置 precision 和 scale。 - 舍入规则:当小数部分超过 scale 指定的位数时,Spark SQL 采用四舍五入(HALF_UP)策略。如需截断,请先用其他函数处理。
- 与 cast 等价:
decimal(expr)等价于cast(expr AS DECIMAL)。
Since: 2.0.1
📱关注公众号
「数据仓库技术」文章同步更新,不错过每一篇干货

💬加群交流
备注「数据仓库技术」加入社群,每日一道大厂SQL真题
