try_subtract:安全减法运算
速查结论
try_subtract(expr1, expr2) 是 Spark SQL 中用于返回两数之差,溢出时返回 NULL 而非报错的数学函数。
语法
try_subtract(expr1, expr2)
参数说明
| 参数 | 说明 |
|---|---|
expr1 | 被减数,可接受的输入类型与 - 运算符相同 |
expr2 | 减数,可接受的输入类型与 - 运算符相同 |
功能说明
try_subtract(expr1, expr2) 返回 expr1 减去 expr2 的结果,如果发生溢出则结果为 NULL。可接受的输入类型与 - 运算符相同,支持数值、日期、时间戳和间隔类型。
示例
> SELECT try_subtract(2, 1);
1
> SELECT try_subtract(-2147483648, 1);
NULL
> SELECT try_subtract(date'2021-01-02', 1);
2021-01-01
> SELECT try_subtract(date'2021-01-01', interval 1 year);
2020-01-01
> SELECT try_subtract(timestamp'2021-01-02 00:00:00', interval 1 day);
2021-01-01 00:00:00
> SELECT try_subtract(interval 2 year, interval 1 year);
1-0
常见报错与避坑指南
- 整数溢出返回 NULL:当减法结果超出数据类型范围时返回 NULL。例如
-2147483648 - 1超出 INT 最小值,try_subtract返回 NULL。 - 日期运算:
try_subtract支持日期减整数、日期减间隔、时间戳减间隔等操作,返回对应的日期或时间戳类型。 - 与 - 运算符的区别:仅在溢出行为上有差异。普通运算用
-即可;处理边界数值时优先使用try_subtract。
Since: 3.3.0
📱关注公众号
「数据仓库技术」文章同步更新,不错过每一篇干货

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