跳到主要内容

try_add:安全加法运算

速查结论

try_add(expr1, expr2) 是 Spark SQL 中用于返回两数之和,溢出时返回 NULL 而非报错的数学函数。

语法

try_add(expr1, expr2)

参数说明

参数说明
expr1左操作数,可接受的输入类型与 + 运算符相同
expr2右操作数,可接受的输入类型与 + 运算符相同

功能说明

try_add(expr1, expr2) 返回 expr1expr2 的和,如果发生溢出则结果为 NULL。可接受的输入类型与 + 运算符相同,支持数值、日期、时间戳和间隔类型。

示例

> SELECT try_add(1, 2);
3
> SELECT try_add(2147483647, 1);
NULL
> SELECT try_add(date'2021-01-01', 1);
2021-01-02
> SELECT try_add(date'2021-01-01', interval 1 year);
2022-01-01
> SELECT try_add(timestamp'2021-01-01 00:00:00', interval 1 day);
2021-01-02 00:00:00
> SELECT try_add(interval 1 year, interval 2 year);
3-0

常见报错与避坑指南

  • 整数溢出返回 NULL:当加法结果超出 INT 或 BIGINT 范围时,try_add 返回 NULL。例如 2147483647 + 1 超出 INT 最大值,结果为 NULL。
  • 类型兼容性try_add 支持与 + 运算符相同的所有类型组合,包括日期加整数、时间戳加间隔等。
  • 与 + 运算符的区别:仅在溢出行为上有差异。普通运算用 + 即可;处理可能溢出的数值时优先使用 try_add

Since: 3.2.0

📱关注公众号

「数据仓库技术」文章同步更新,不错过每一篇干货

微信公众号二维码
💬加群交流

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

交流微信二维码

你可能还想看