to_varchar:数字转字符串
速查结论
to_varchar(numberExpr, formatExpr) 是 Spark SQL 中用于根据格式模板将数字转换为字符串的函数,与to_char功能一致。
语法
to_varchar(numberExpr, formatExpr)
根据formatExpr将numberExpr转换为字符串。如果转换失败,则抛出异常。格式可以由以下字符组成,不区分大小写:
'0'或'9':指定0到9之间的预期数字。格式字符串中的0或9序列与输入值中的数字序列相匹配,生成的结果字符串与格式字符串中相应序列的长度相同。如果0/9序列以0开头并且在小数点之前,它只能匹配相同大小的数字序列。否则,如果序列以9开头或在小数点之后,它可以匹配相同大小或更小的数字序列,并且如果0/9序列比匹配的小数值部分的数字多,则结果字符串用零左填充;否则,用空格填充。'.'或'D':指定小数点的位置(可选,只允许出现一次)。','或'G':指定分组(千位)分隔符(,)的位置。每个分组分隔符的左右必须有0或9。'$':指定货币符号$的位置。这个角色只能指定一次。'S'或'MI':指定'-'或'+'符号的位置(可选,只允许在格式字符串的开头或结尾出现一次)。注意'S'对于正值打印'+',但'MI'打印一个空格。'PR':只允许在格式字符串的末尾;指定如果输入值为负,则结果字符串将被尖括号包裹。例如'<1>'。
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| numberExpr | NUMERIC | 要转换的数字表达式 |
| formatExpr | STRING | 格式模板字符串 |
示例
> SELECT to_varchar(454, '999');
454
> SELECT to_varchar(454.00, '000D00');
454.00
> SELECT to_varchar(12454, '99G999');
12,454
> SELECT to_varchar(78.12, '$99.99');
$78.12
> SELECT to_varchar(-12454.8, '99G999D9S');
12,454.8-
常见报错与避坑指南
- 与
to_char的等价性:to_varchar和to_char是别名关系,功能完全一致,可根据代码风格选择使用。 - 格式模板不匹配时抛异常:当格式字符串与输入数字不匹配时,函数会直接抛出异常,建议在ETL流程中对数据格式做预校验。
Since: 3.5.0
📱关注公众号
「数据仓库技术」文章同步更新,不错过每一篇干货

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