try_add:安全加法运算
速查结论
try_add(expr1, expr2) 是 Spark SQL 中用于返回两数之和,溢出时返回 NULL 而非报错的数学函数。
语法
try_add(expr1, expr2)
参数说明
| 参数 | 说明 |
|---|---|
expr1 | 左操作数,可接受的输入类型与 + 运算符相同 |
expr2 | 右操作数,可接受的输入类型与 + 运算符相同 |
功能说明
try_add(expr1, expr2) 返回 expr1 和 expr2 的和,如果发生溢出则结果为 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真题
