to_char 函数

适用于:check marked yes Databricks SQL check marked yes Databricks Runtime 11.1 及更高版本

使用格式设置 fmt 返回强制转换为 STRINGexpr

在 Databricks Runtime 14.0 及更早版本中,to_char 支持数值类型 expr

在 Databricks SQL 和 Databricks Runtime 14.1 及更高版本中,to_char 还支持类型为 DATETIMESTAMPBINARYexpr

to_charto_varchar 的同义词。

语法

to_char(expr, { numericFormat | datetimeFormat | stringFormat } )

numericFormat
  { ' [ S ] [ L | $ ]
      [ 0 | 9 | G | , ] [...]
      [ . | D ]
      [ 0 | 9 ] [...]
      [ L | $ ] [ PR | MI | S ] ' }

参数

  • expr:数值、日期/时间、STRINGBINARY 类型表达式。
  • numericFormat:一种 STRING 文本,指定数值类型 expr 的格式化输出。
  • datetimeFormat:一种 STRING 文本,指定日期/时间类型 expr 的格式化输出。
  • stringFormat:一种 STRING 文本,指定 BINARY 类型 expr 的格式化输出。

返回

STRING,表示格式设置操作的结果。

datetmeFormat 可以包含“日期/时间模式”中指定的模式。

stringFormat 可以是以下任意一种(不区分大小写的字符串):

  • 'base64'

    一个 base 64 字符串。

  • 'hex'

    一个十六进制格式的字符串。

  • 'utf-8'

    输入二进制文件被解码为 UTF-8 字符串。

numericFormat 可以包含以下元素(不区分大小写):

  • 09

    指定介于 0 和 9 之间的所需数字。 格式字符串中具有介于 0 和 9 之间的值的数字序列与输入值中的数字序列匹配。 这将生成一个结果字符串,其长度与格式字符串的相应序列的长度相同。 如果 0/9 序列包含的数字多于十进制值的匹配部分,并且该序列以 0 开头,且位于小数点之前,那么会用零左填充此结果字符串。 否则,会用空格填充此结果字符串。

  • .D

    指定小数点的位置(可选,仅允许指定一次)。

  • ,G

    指定分组(千位)分隔符 (,) 的位置。 每个分组分隔符的左右两边必须有一个 0 或 9。

  • $

    指定 $ 货币符号的位置。 此字符只能指定一次。

  • SMI

    指定“-”或“+”符号的位置(可选,只允许在格式字符串的开头或结尾出现一次)。 请注意,S 打印 + 表示正值,而 MI 打印空格。

  • PR

    仅允许位于格式字符串末尾;指定如果输入值为负数,则结果字符串将用尖括号括起来。 ('<1>')。

如果 numExpr 中的整数或小数部分需要的数字数超过 fmt 中允许的相应部分,则函数将返回 fmt 中的这两个部分,09 替换为 #(例如 '$###.##')。

如果 fmt 格式不正确,Databricks SQL 将返回错误。

此函数是 to_varchar 的别名。

示例

> SELECT to_char(454, '999');
 454

> SELECT to_char(454, '000.00');
 454.00

> SELECT to_char(12454, '99,999');
 12,454

> SELECT to_char(78.12, '$99.99');
 $78.12

> SELECT to_char(-12454.8, '99,999.9S');
 12,454.8-

> SELECT to_char(12454.8, '99,999.9S');
 12,454.8+

> SELECT '>' || to_char(123, '00000.00') || '<';
 >00123.00<

> SELECT '>' || to_char(123, '99999.99') || '<';
 >  123.00<

> SELECT to_char(1.1, '99');
 ##

> SELECT to_char(111.11, '99.9');
 ##.#

> SELECT to_char(111.11, '$99.9');
 $##.#

> SELECT to_char(date'2016-04-08', 'y');
 2016

> SELECT to_char(x'537061726b2053514c', 'base64');
 U3BhcmsgU1FM

> SELECT to_char(x'537061726b2053514c', 'hex');
 537061726B2053514C

> SELECT to_char(encode('abc', 'utf-8'), 'utf-8');
 abc

> SELECT to_char(111, 'wrong');
 Error: 'wrong' is a malformed format.