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

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