to_varchar
函数
适用于: Databricks SQL Databricks Runtime 11.3 LTS 及更高版本
使用格式设置 fmt
返回强制转换为 STRING
的 expr
。
在 Databricks Runtime 14.0 及更早版本中,to_varchar
支持数值类型 expr
。
在 Databricks SQL 和 Databricks Runtime 14.1 及更高版本中,to_varchar
还支持类型为 DATE
、TIMESTAMP
、BINARY
的 expr
to_varchar
是 to_char 的同义词。
语法
to_varchar(expr, { numericFormat | datetimeFormat | stringFormat } )
numericFormat
{ ' [ S ] [ L | $ ]
[ 0 | 9 | G | , ] [...]
[ . | D ]
[ 0 | 9 ] [...]
[ L | $ ] [ PR | MI | S ] ' }
参数
expr
:数值、日期/时间、STRING
或BINARY
类型表达式。numericFormat
:一种STRING
文本,指定数值类型expr
的格式化输出。datetimeFormat
:一种STRING
文本,指定日期/时间类型expr
的格式化输出。stringFormat
:一种STRING
文本,指定BINARY
类型expr
的格式化输出。
返回
STRING
,表示格式设置操作的结果。
datetmeFormat
可以包含“日期/时间模式”中指定的模式。
stringFormat
可以是以下任意一种(不区分大小写的字符串):
'base64'
一个 base 64 字符串。
'hex'
一个十六进制格式的字符串。
'utf-8'
输入二进制文件被解码为 UTF-8 字符串。
numericFormat
可以包含以下元素(不区分大小写):
0
或9
指定介于 0 和 9 之间的所需数字。 格式字符串中具有介于 0 和 9 之间的值的数字序列与输入值中的数字序列匹配。 这将生成一个结果字符串,其长度与格式字符串的相应序列的长度相同。 如果 0/9 序列包含的数字多于十进制值的匹配部分,并且该序列以 0 开头,且位于小数点之前,那么会用零左填充此结果字符串。 否则,会用空格填充此结果字符串。
.
或D
指定小数点的位置(可选,仅允许指定一次)。
,
或G
指定分组(千位)分隔符 (,) 的位置。 每个分组分隔符的左右两边必须有一个 0 或 9。
$
指定 $ 货币符号的位置。 此字符只能指定一次。
S
或MI
指定“-”或“+”符号的位置(可选,只允许在格式字符串的开头或结尾出现一次)。 请注意,
S
打印+
表示正值,而MI
打印空格。PR
仅允许位于格式字符串末尾;指定如果输入值为负数,则结果字符串将用尖括号括起来。 ('<1>')。
如果 numExpr
需要的数字超过 fmt
允许的数字,则函数将返回 fmt
,其中 0
和 9
会替换为 #
(例如 '$###.##'
)。
如果 fmt
格式不正确,Databricks SQL 将返回错误。
此函数是 to_varchar 的别名。
示例
> SELECT to_varchar(454, '999');
454
> SELECT to_varchar(454, '000.00');
454.00
> SELECT to_varchar(12454, '99,999');
12,454
> SELECT to_varchar(78.12, '$99.99');
$78.12
> SELECT to_varchar(-12454.8, '99,999.9S');
12,454.8-
> SELECT to_varchar(12454.8, '99,999.9S');
12,454.8+
> SELECT '>' || to_varchar(123, '00000.00') || '<';
>00123.00<
> SELECT '>' || to_varchar(123, '99999.99') || '<';
> 123.00<
> SELECT to_varchar(1.1, '99');
##
> SELECT to_varchar(111.11, '99.9');
##.#
> SELECT to_varchar(111.11, '$99.9');
$##.#
> SELECT to_varchar(date'2016-04-08', 'y');
2016
> SELECT to_varchar(x'537061726b2053514c', 'base64');
U3BhcmsgU1FM
> SELECT to_varchar(x'537061726b2053514c', 'hex');
537061726B2053514C
> SELECT to_varchar(encode('abc', 'utf-8'), 'utf-8');
abc
> SELECT to_varchar(111, 'wrong');
Error: 'wrong' is a malformed format.