Oracle TO_CHAR(number) 函数使用指南

Oracle TO_CHAR(number) 是一个内置函数,它使用可选的格式参数将给定的数值转换为 VARCHAR2 数据类型的值。

Oracle TO_CHAR(number) 语法

这里是 Oracle TO_CHAR(number) 函数的语法:

TO_CHAR(n [, fmt [, 'nlsparam' ] ])

参数

n

必需的。要转换的数值。

fmt

可选的。格式化字符串,比如:L99G999D99MI

nlsparam

可选的。'nlsparam' 参数指定由数字格式元素返回的这些字符:

  • 十进制字符
  • 组分隔符
  • 本地货币符号
  • 国际货币符号

此参数可以采用以下格式:

NLS_NUMERIC_CHARACTERS = ''dg''
  NLS_CURRENCY = ''text''
  NLS_ISO_CURRENCY = territory

字符 dg 分别表示十进制字符和组分隔符。它们必须是不同的单字节字符。在引号括起来的字符串中,必须在参数值周围使用两个单引号。货币符号有十个字符可用。

如果省略 'nlsparam' 或任何一个参数,则此函数使用您会话的默认参数值。

返回值

Oracle TO_CHAR(number) 函数返回。

如果任意一个参数为 NULLTO_CHAR(number) 将返回 NULL

Oracle TO_CHAR(number) 示例

这里有几个展示了 Oracle TO_CHAR(number) 函数用法的示例。

基本用法

下面是一个简单的示例用 Oracle TO_CHAR(number) 函数将 123456.789 转为字符类型。

SELECT TO_CHAR(123456.789)
FROM dual;

输出:

TO_CHAR(123456.789)
______________________
123456.789

虽然看起来输出和输入相同,但是您可以使用 DUMP() 函数查看他们之间的区别:

SELECT
    DUMP(123456.789),
    DUMP(TO_CHAR(123456.789))
FROM dual;

输出:

DUMP(123456.789)                   DUMP(TO_CHAR(123456.789))
__________________________________ ______________________________________________
Typ=2 Len=6: 195,13,35,57,79,91    Typ=1 Len=10: 49,50,51,52,53,54,46,55,56,57

格式

Oracle TO_CHAR(number) 函数允许您指定输出的格式:

SELECT TO_CHAR(1234567.89, '9G999G999D99')
FROM dual;

输出:

TO_CHAR(1234567.89,'9G999G999D99')
_____________________________________
 1,234,567.89

在本示例中, 9 代表任意数字, G 代表本地化千分位, D 代表本地化小数点。

您也可使用 0 以增加签到或者尾随 0:

SELECT TO_CHAR(1234567.89, '009G999G999D000')
FROM dual;

输出:

TO_CHAR(1234567.89,'009G999G999D000')
________________________________________
 001,234,567.890

或者您可以使用一个 FM 前导符号以适应不同长度的数字:

SELECT TO_CHAR(1234567.89, 'FM999G999G999G999G999G999D99')
FROM dual;

输出:

TO_CHAR(1234567.89,'FM999G999G999G999G999G999D99')
_____________________________________________________
1,234,567.89

请参考 Oracle 数字格式模型

结论

Oracle TO_CHAR(number) 是一个内置函数,它使用可选的格式参数将给定的数值转换为 VARCHAR2 数据类型的值。