跳到主要内容

try_to_number:安全数字格式转换

速查结论

try_to_number(expr, fmt) 是 Spark SQL 中用于按格式模板将字符串转换为数字,不匹配时返回 NULL 而非报错的字符串函数。

语法

try_to_number(expr, fmt)

参数说明

参数说明
expr需要转换为数字的字符串表达式
fmt指定字符串格式模板,与 to_number 函数语法相同

功能说明

try_to_number(expr, fmt) 根据字符串格式 fmt 将字符串 expr 转换为数字。如果字符串 expr 与预期格式不匹配,则返回 NULL。该格式遵循与 to_number 函数相同的语义。

示例

> SELECT try_to_number('454', '999');
454
> SELECT try_to_number('454.00', '000.00');
454.00
> SELECT try_to_number('12,454', '99,999');
12454
> SELECT try_to_number('$78.12', '$99.99');
78.12
> SELECT try_to_number('12,454.8-', '99,999.9S');
-12454.8

常见报错与避坑指南

  • 格式不匹配返回 NULL:当输入字符串与格式模板不匹配时,try_to_number 返回 NULL。确保格式模板精确描述了输入字符串的结构(包括小数点、千位分隔符、货币符号等)。
  • 负数符号处理:使用格式元素 S 表示可选的符号位,MIPR 表示负数格式。
  • 与 to_number 的区别to_number 在格式不匹配时会抛出异常;try_to_number 则优雅地返回 NULL。处理不规整的输入数据时优先使用 try_to_number

Since: 3.3.0

📱关注公众号

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

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

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

交流微信二维码

你可能还想看