跳到主要内容

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真题

交流微信二维码

你可能还想看