- 类别:
TO_CHAR、TO_VARCHAR¶
将输入表达式转换为字符串。对于 NULL 输入,输出为 NULL。
这些函数为同义函数。
语法¶
TO_CHAR( <expr> )
TO_CHAR( <numeric_expr> [, '<format>' ] )
TO_CHAR( <date_or_time_expr> [, '<format>' ] )
TO_CHAR( <binary_expr> [, '<format>' ] )
TO_VARCHAR( <expr> )
TO_VARCHAR( <numeric_expr> [, '<format>' ] )
TO_VARCHAR( <date_or_time_expr> [, '<format>' ] )
TO_VARCHAR( <binary_expr> [, '<format>' ] )
实参¶
必填:
expr
任何数据类型的表达式。
numeric_expr
数值表达式。
date_or_time_expr
DATE、TIME 或 TIMESTAMP 类型的表达式。
binary_expr
BINARY 或 VARBINARY 类型的表达式。
可选:
format
输出字符串的格式:
对于
numeric_expr
,指定用于解释数字表达式的 SQL 格式模型。有关更多信息,请参阅 SQL 格式模型。对于
date_or_time_expr
,指定解析或生成字符串的预期格式。有关更多信息,请参阅 转换函数中的日期和时间格式。默认值为以下会话参数的当前值:
对于
binary_expr
,指定生成字符串的格式(例如 'HEX'、'BASE64' 或 'UTF-8')。有关更多信息,请参阅 Overview of Supported Binary Formats。
返回¶
此函数返回 VARCHAR 数据类型的值或 NULL 值。
使用说明¶
对于 VARIANT、ARRAY 或 OBJECT 输入,输出是包含 JSON 文档或 JSON 基本值的字符串(除非 VARIANT 或 OBJECT 包含 XML 标签,在这种情况下,输出是包含 XML 文档的字符串):
存储在 VARIANT 中的字符串按原样保留(即不转换为 JSON 字符串)。
JSON null 值被转换为包含“null”一词的字符串。
示例¶
以下示例将数字、时间戳和日期转换为字符串。
转换数字的例子¶
将数值转换为指定 格式 的字符串:
CREATE OR REPLACE TABLE convert_numbers_to_strings(column1 NUMBER);
INSERT INTO convert_numbers_to_strings VALUES
(-12.391),
(0),
(-1),
(0.10),
(0.01),
(3987),
(1.111);
SELECT column1 AS orig_value,
TO_CHAR(column1, '">"$99.0"<"') AS D2_1,
TO_CHAR(column1, '">"B9,999.0"<"') AS D4_1,
TO_CHAR(column1, '">"TME"<"') AS TME,
TO_CHAR(column1, '">"TM9"<"') AS TM9,
TO_CHAR(column1, '">"0XXX"<"') AS X4,
TO_CHAR(column1, '">"S0XXX"<"') AS SX4
FROM convert_numbers_to_strings;
+------------+----------+------------+-------------+------------+--------+---------+
| ORIG_VALUE | D2_1 | D4_1 | TME | TM9 | X4 | SX4 |
|------------+----------+------------+-------------+------------+--------+---------|
| -12.391 | >-$12.4< | > -12.4< | >-1.2391E1< | >-12.391< | >FFF4< | >-000C< |
| 0.000 | > $0.0< | > .0< | >0E0< | >0.000< | >0000< | >+0000< |
| -1.000 | > -$1.0< | > -1.0< | >-1E0< | >-1.000< | >FFFF< | >-0001< |
| 0.100 | > $0.1< | > .1< | >1E-1< | >0.100< | >0000< | >+0000< |
| 0.010 | > $0.0< | > .0< | >1E-2< | >0.010< | >0000< | >+0000< |
| 3987.000 | > $##.#< | > 3,987.0< | >3.987E3< | >3987.000< | >0F93< | >+0F93< |
| 1.111 | > $1.1< | > 1.1< | >1.111E0< | >1.111< | >0001< | >+0001< |
+------------+----------+------------+-------------+------------+--------+---------+
输出说明了如何根据指定的格式将值转换为字符串:
>
和<
符号是包含在输出中的字符串字面量。这样更容易看到插入空格的位置。D2_1
列显示数值,数字前打印$
。对于
3987
值,数字整数部分的位数超过了格式中数字位置的数量,因此所有位数都打印为#
,以表示溢出。对于
0.10
、0.01
和1.111
值,其小数部分的位数超过了格式中数字位置的数量,因此小数值被截断。
D4_1
列显示,数字的整数部分中的零值被表示为空格。对于
0
、0.10
和0.01
值,分隔符前的零用空格代替。对于
0.10
、0.01
和1.111
值,其小数部分的位数超过了格式中数字位置的数量,因此小数值被截断。
TME
列以科学符号显示值。TM9
列根据数字的值将值显示为整数或小数部分。X4
列将值显示为十六进制数字,不含小数部分。SX4
列显示数值的绝对值的十六进制数字,并包含数字符号(+
或-
)。
此示例将一个对数值转换为字符串:
SELECT TO_VARCHAR(LOG(3,4));
+----------------------+
| TO_VARCHAR(LOG(3,4)) |
|----------------------|
| 1.261859507 |
+----------------------+
转换时间戳和日期的示例¶
将 TIMESTAMP 值转换为指定格式的字符串:
SELECT TO_VARCHAR('2024-04-05 01:02:03'::TIMESTAMP, 'mm/dd/yyyy, hh24:mi hours');
+---------------------------------------------------------------------------+
| TO_VARCHAR('2024-04-05 01:02:03'::TIMESTAMP, 'MM/DD/YYYY, HH24:MI HOURS') |
|---------------------------------------------------------------------------|
| 04/05/2024, 01:02 hours |
+---------------------------------------------------------------------------+
将 DATE 值转换为默认格式的字符串:
SELECT TO_VARCHAR('03-April-2024'::DATE);
+-----------------------------------+
| TO_VARCHAR('03-APRIL-2024'::DATE) |
|-----------------------------------|
| 2024-04-03 |
+-----------------------------------+
将 DATE 值转换为指定格式的字符串:
SELECT TO_VARCHAR('03-April-2024'::DATE, 'yyyy.mm.dd');
+-------------------------------------------------+
| TO_VARCHAR('03-APRIL-2024'::DATE, 'YYYY.MM.DD') |
|-------------------------------------------------|
| 2024.04.03 |
+-------------------------------------------------+