跳到主要内容

to_char:数字转字符串

速查结论

to_char(numberExpr, formatExpr) 是 Spark SQL 中用于根据格式模板将数字转换为字符串的函数。

语法

to_char(numberExpr, formatExpr)

根据formatExprnumberExpr转换为字符串。如果转换失败,则抛出异常。格式可以由以下字符组成,不区分大小写:

  • '0''9':指定0到9之间的预期数字。格式字符串中的0或9序列与输入值中的数字序列相匹配,生成的结果字符串与格式字符串中相应序列的长度相同。如果0/9序列包含的数字比小数点前的匹配十进制值部分多,以0开头,并且位于小数点之前,则结果字符串用零左填充;否则,用空格填充。
  • '.''D':指定小数点的位置(可选,只允许出现一次)。
  • ',''G':指定分组(千位)分隔符(,)的位置。每个分组分隔符的左右必须有0或9。
  • '$':指定货币符号$的位置。这个角色只能指定一次。
  • 'S''MI':指定'-'或'+'符号的位置(可选,只允许在格式字符串的开头或结尾出现一次)。注意'S'对于正值打印'+',但'MI'打印一个空格。
  • 'PR':只允许在格式字符串的末尾;指定如果输入值为负,则结果字符串将被尖括号包裹。('<1>')

参数说明

参数类型说明
numberExprNUMERIC要转换的数字表达式
formatExprSTRING格式模板字符串

示例

> 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真题

交流微信二维码

你可能还想看