---
title: "TO_CHAR(number) - OceanBase 数据库 V4.3.5 | OceanBase 文档中心"
description: "TO_CHAR(number) 描述 该函数用于将数值型数据转换为 VARCHAR 类型的数据。 说明 对于 OceanBase 数据库 V4.3.5 版本，该函数从 V4.3.5 BP1 版本开始支持。 语法声明 TO_CHAR(number [, fmt]) 参数解释 number ：表示要转换的数值型数据。 f…"
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.3.5 LTS

# TO_CHAR(number)

更新时间：2026-07-15 20:42:45

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.5/zh-CN/700.reference/500.sql-reference/100.sql-syntax/200.common-tenant-of-mysql-mode/400.functions-of-mysql-mode/200.single-row-functions-of-mysql-mode/300.conversion-functions-of-mysql-mode/1700.to_char_number-of-mysql-mode.md)  

## 描述

该函数用于将数值型数据转换为 `VARCHAR` 类型的数据。

#### 说明

对于 OceanBase 数据库 V4.3.5 版本，该函数从 V4.3.5 BP1 版本开始支持。

## 语法声明

```sql
TO_CHAR(number [, fmt])

```

## 参数解释

- `number`：表示要转换的数值型数据。
 - `fmt`：可选项，用于指定数值输出格式的参数。如果省略 `fmt`，则 `number` 被转换为 `VARCHAR` 值。具体介绍参见下文 [fmt](#fmt)。

### fmt

`fmt` 参数格式取值如下：

- [数值类](#数值类)：`0` 和 `9`。
 - [分组类](#分组类)：`.`、`,`、`D` 和 `G`。
 - [货币类](#货币类)：`$`、`C`、`L` 和 `U`。
 - [计算转换类](#计算转换类)：`EEEE`、`RN`、`V` 和 `X`。
 - [正负符号](#正负符号)：`MI`、`PR` 和 `S`。
 - [正统类](#正统类)：`TM`。
 - [其它类](#其它类)：`B` 和 `FM`。

#### 数值类

- `0`：是一个占位符，表示一个数字位置。在对应位置返回对应的字符，如果没有则以 `0` 填充。

  #### 注意

  `0` 是一个强制的符号，对应位没有，则以 `0` 填充。这是与 `9` 不同的特性。

  **示例如下：**

  ```sql
  SELECT TO_CHAR(123, '00000'), TO_CHAR(123.456, '0000.0000');

  ```

  返回结果如下：

  ```shell
  +-----------------------+-------------------------------+
  | TO_CHAR(123, '00000') | TO_CHAR(123.456, '0000.0000') |
  +-----------------------+-------------------------------+
  |  00123                |  0123.4560                    |
  +-----------------------+-------------------------------+
  1 row in set

  ```
 - `9`：是一个占位符，表示一个数字位置。具体如下：

     - 在小数位，则表示转换为对应字符，如果没有则以 `0` 填充。
     - 在整数位，没有对应则不填充字符。

      **示例如下：**

      ```sql
      SELECT TO_CHAR(123, '999999'), TO_CHAR(123.456, '9999.9999');

      ```

      返回结果如下：

      ```shell
      +------------------------+-------------------------------+
      | TO_CHAR(123, '999999') | TO_CHAR(123.456, '9999.9999') |
      +------------------------+-------------------------------+
      |     123                |   123.4560                    |
      +------------------------+-------------------------------+
      1 row in set

      ```

#### 分组类

- `.`（点号）：表示小数点，位于指定位置。若小数部分不足，则补零；若小数部分多余 `fmt` 中指定的位数，则进行四舍五入。

  #### 注意

  `fmt` 只能指定一个小数点。

  **示例如下：**

  ```sql
  SELECT TO_CHAR(123.555, '999.99'), TO_CHAR(123.5, '999.99');

  ```

  返回结果如下：

  ```shell
  +----------------------------+--------------------------+
  | TO_CHAR(123.555, '999.99') | TO_CHAR(123.5, '999.99') |
  +----------------------------+--------------------------+
  |  123.56                    |  123.50                  |
  +----------------------------+--------------------------+
  1 row in set

  ```
 - `,`（英文逗号）：一般以千分位出现，作为分组符号使用。如果需要也可以当作是十分位/百分位出现，可以出现 N 次，视乎数字的大小而定。

  #### 注意

  `,` 不能在 `fmt` 开头位置并且只能出现在整数部分。

  **示例如下：**

  ```sql
  SELECT TO_CHAR(123456, '99,99,99'), TO_CHAR(123456789, '999,999,999');

  ```

  返回结果如下：

  ```shell
  +-----------------------------+-----------------------------------+
  | TO_CHAR(123456, '99,99,99') | TO_CHAR(123456789, '999,999,999') |
  +-----------------------------+-----------------------------------+
  |  12,34,56                   |  123,456,789                      |
  +-----------------------------+-----------------------------------+
  1 row in set

  ```
 - `D`（ISO 小数位符号）："点号" 的国际版本（ISO），跟 `.` 的作用相同，只能出现一次。所不同的是，该元素会使用参数 `NLS_NUMERIC_CHARACTER` 的默认值。

  #### 注意

  没有特别需要一般不要用这个格式符号，也不要轻易修改参数值（`NLS_NUMERIC_CHARACTER`）。

  **示例如下：**

  ```sql
  SELECT TO_CHAR(123.555, '999D99'), TO_CHAR(123.5, '999D99');

  ```

  返回结果如下：

  ```shell
  +----------------------------+--------------------------+
  | TO_CHAR(123.555, '999D99') | TO_CHAR(123.5, '999D99') |
  +----------------------------+--------------------------+
  |  123.56                    |  123.50                  |
  +----------------------------+--------------------------+
  1 row in set

  ```
 - `G`："逗号" 的 ISO 标准，作为分组符号使用，可以放在多个地方使用。

  #### 注意

  如果要转换出小数点，则要和 `D` 配合使用，不能和点号（`.`）配合。

  **示例如下：**

  ```sql
  SELECT TO_CHAR(123456, '99G99G99'), TO_CHAR(123456789, '999G999G999');

  ```

  返回结果如下：

  ```shell
  +-----------------------------+-----------------------------------+
  | TO_CHAR(123456, '99G99G99') | TO_CHAR(123456789, '999G999G999') |
  +-----------------------------+-----------------------------------+
  |  12,34,56                   |  123,456,789                      |
  +-----------------------------+-----------------------------------+
  1 row in set

  ```

#### 货币类

- `$`（美元符号）：返回带前导美元符号的值。

  #### 注意

  `$` 可以放在 `fmt` 的任意地方，但是只能出现一次。

  **示例如下：**

  ```sql
  SELECT TO_CHAR(123.45, '$999.99'), TO_CHAR(123.45, '9,9,9,9.$99');

  ```

  返回结果如下：

  ```shell
  +----------------------------+--------------------------------+
  | TO_CHAR(123.45, '$999.99') | TO_CHAR(123.45, '9,9,9,9.$99') |
  +----------------------------+--------------------------------+
  |  $123.45                   |    $1,2,3.45                   |
  +----------------------------+--------------------------------+
  1 row in set

  ```
 - `C`（国际货币符号）：在指定位置返回 ISO 货币符号(当前 `NLS_ISO_CURRENCY` 参数所代表的值)。

  #### 注意

  `C` 只能出现在 `fmt` 整数部位第一位。

  **示例如下：**

  ```sql
  SELECT TO_CHAR(123.45, 'C999.99');

  ```

  返回结果如下：

  ```shell
  +----------------------------+
  | TO_CHAR(123.45, 'C999.99') |
  +----------------------------+
  |      USD123.45             |
  +----------------------------+
  1 row in set

  ```
 - `L`（本地货币符号）：是 `C` 的本地版本，在指定位置返回本地货币符号，可以放在整个格式的最前面和最后面。

  **示例如下：**

  ```sql
  SELECT TO_CHAR(123.45, 'L999.99'), TO_CHAR(123.45, '999.99L');

  ```

  返回结果如下：

  ```shell
  +----------------------------+----------------------------+
  | TO_CHAR(123.45, 'L999.99') | TO_CHAR(123.45, '999.99L') |
  +----------------------------+----------------------------+
  |           $123.45          |           123.45$          |
  +----------------------------+----------------------------+
  1 row in set

  ```
 - `U`：在指定位置返回由 `NLS_DUAL_CURRENCY` 参数代表的当前值确定的欧元（或其他）双货币符号。

  **示例如下：**

  ```sql
  SELECT TO_CHAR(123.45, 'U999.99'), TO_CHAR(123.45, '999.99U'), TO_CHAR(123.45, '999U999');

  ```

  返回结果如下：

  ```shell
  +----------------------------+----------------------------+----------------------------+
  | TO_CHAR(123.45, 'U999.99') | TO_CHAR(123.45, '999.99U') | TO_CHAR(123.45, '999U999') |
  +----------------------------+----------------------------+----------------------------+
  |           $123.45          |           123.45$          |           123$450          |
  +----------------------------+----------------------------+----------------------------+
  1 row in set

  ```

#### 计算转换类

- `EEEE`（科学计算符）：返回使用科学计数法表示的值。由于是科学计算方法，所以小数位前面加一个 9 或者 0 即可，多个是没有意义的。

  **示例如下：**

  ```sql
  SELECT TO_CHAR(10000, '9EEEE'), TO_CHAR(10000, '9.9EEEE'), TO_CHAR(10000, '999.9EEEE');

  ```

  返回结果如下：

  ```shell
  +-------------------------+---------------------------+-----------------------------+
  | TO_CHAR(10000, '9EEEE') | TO_CHAR(10000, '9.9EEEE') | TO_CHAR(10000, '999.9EEEE') |
  +-------------------------+---------------------------+-----------------------------+
  |   1E+04                 |   1.0E+04                 |   1.0E+04                   |
  +-------------------------+---------------------------+-----------------------------+
  1 row in set

  ```
 - `RN`（`rn`）：把整数（1 至 3999 之间）转换为罗马字符。`RN` 表示转为大写，`rn` 表示转为小写。

  #### 注意

  `RN`（`rn`）不能和其它符号组合使用。

  **示例如下：**

  ```sql
  SELECT TO_CHAR(99, 'RN'), TO_CHAR(99, 'rn');

  ```

  返回结果如下：

  ```shell
  +-------------------+-------------------+
  | TO_CHAR(99, 'RN') | TO_CHAR(99, 'rn') |
  +-------------------+-------------------+
  |            XCIX   |            xcix   |
  +-------------------+-------------------+
  1 row in set

  ```
 - `V`：返回一个乘以 `10^n` 的值（如有必要，将其四舍五入），其中 `n` 是 `V` 后面的数字 9 的个数。

  #### 注意

  `V` 在`fmt` 格式中不能和小数表达写在一起，但是可以混合货币等符号使用。

  **示例如下：**

  ```sql
  SELECT TO_CHAR(123.456, '999V99'), TO_CHAR(123.4, '999V999'), TO_CHAR(5, '9V');

  ```

  返回结果如下：

  ```shell
  +----------------------------+---------------------------+------------------+
  | TO_CHAR(123.456, '999V99') | TO_CHAR(123.4, '999V999') | TO_CHAR(5, '9V') |
  +----------------------------+---------------------------+------------------+
  |  12346                     |  123400                   |  5               |
  +----------------------------+---------------------------+------------------+
  1 row in set

  ```
 - `X`：返回指定位数的十六进制值。如果指定的数字不是整数，则将其舍入为整数。限制如下：

     - 此元素只接受正值或 0。负值返回一个错误。
     - 只能在该元素前面加 0（返回前导零）或 FM。任何其他元素都会返回错误。如果使用 X 既不指定 0 也不指定 FM，则返回值始终有一个前导空格。

      **示例如下：**

      ```sql
      SELECT TO_CHAR(10, 'X'), TO_CHAR(10, 'XXXX');

      ```

      返回结果如下：

      ```shell
      +------------------+---------------------+
      | TO_CHAR(10, 'X') | TO_CHAR(10, 'XXXX') |
      +------------------+---------------------+
      |  A               |     A               |
      +------------------+---------------------+
      1 row in set

      ```

#### 正负符号

- `MI`（`mi`）：返回带有尾随减号（`-`）的负值。如果是正数，则在末尾加上空格。

  #### 注意

  `MI` 格式元素只能出现在数字格式模型的最后一个位置。

  **示例如下：**

  ```sql
  SELECT TO_CHAR(-123, '999MI'), TO_CHAR(-123, '999mi');

  ```

  返回结果如下：

  ```shell
  +------------------------+------------------------+
  | TO_CHAR(-123, '999MI') | TO_CHAR(-123, '999mi') |
  +------------------------+------------------------+
  | 123-                   | 123-                   |
  +------------------------+------------------------+
  1 row in set

  ```
 - `PR`：表达负数的另外一种方式：

     - 如果是正数，则在开头位置加上空格。
     - 如果是负数，则用尖括号 `<>` 把数字包起来。

      #### 注意

      `PR` 格式元素只能出现在数字格式模型的最后一个位置。

      **示例如下：**

      ```sql
      SELECT TO_CHAR(-1234.89,'9G999D00PR'), TO_CHAR(1234.89,'9G999D00PR');

      ```

      返回结果如下：

      ```shell
      +--------------------------------+-------------------------------+
      | TO_CHAR(-1234.89,'9G999D00PR') | TO_CHAR(1234.89,'9G999D00PR') |
      +--------------------------------+-------------------------------+
      | <1,234.89>                     |  1,234.89                     |
      +--------------------------------+-------------------------------+
      1 row in set

      ```
 - `S`：为正数加一个正号（`+`），为负数加一个负号（`-`）。

  #### 注意

  `S` 格式元素只能出现在数字格式模型的第一个或最后一个位置。

  **示例如下：**

  ```sql
  SELECT TO_CHAR(-123.45,'S999.99'), TO_CHAR(123.45,'S999.99');

  ```

  返回结果如下：

  ```shell
  +----------------------------+---------------------------+
  | TO_CHAR(-123.45,'S999.99') | TO_CHAR(123.45,'S999.99') |
  +----------------------------+---------------------------+
  | -123.45                    | +123.45                   |
  +----------------------------+---------------------------+
  1 row in set

  ```

#### 正统类

`TM`：默认值为 `TM9`，除非输出超过 64 个字符，否则以固定符号返回数字。如果输出超过 64 个字符，将自动以科学记数法返回该数字。当数字长度超过 64 位时候，`TM9` 的输出等同于 `TME` 的输出。

**示例如下：**

```sql
SELECT TO_CHAR(1234, 'TM9'), TO_CHAR(1234, 'TME');

```

返回结果如下：

```shell
+----------------------+----------------------+
| TO_CHAR(1234, 'TM9') | TO_CHAR(1234, 'TME') |
+----------------------+----------------------+
| 1234                 | 1.234E+03            |
+----------------------+----------------------+
1 row in set

```

#### 其它类

- `B`（空格符）：在整数部分最前面加一个空格，可以出现在任意位置。

  #### 注意

  `B` 只能出现在整数部位。

  **示例如下：**

  ```sql
  SELECT TO_CHAR(1234, '99B99'), TO_CHAR(1234, '9999B'), TO_CHAR(1234, 'B9999');

  ```

  返回结果如下：

  ```shell
  +------------------------+------------------------+------------------------+
  | TO_CHAR(1234, '99B99') | TO_CHAR(1234, '9999B') | TO_CHAR(1234, 'B9999') |
  +------------------------+------------------------+------------------------+
  |  1234                  |  1234                  |  1234                  |
  +------------------------+------------------------+------------------------+
  1 row in set

  ```
 - `FM`（`fm`）：去除前面的空格。

  #### 注意

  `FM` 只能出现在 `fmt` 整数部位第一位。

  **示例如下：**

  ```sql
  SELECT TO_CHAR('  123.456', 'fm999.999'), TO_CHAR('  123.456', 'FM999.999');

  ```

  返回结果如下：

  ```shell
  +-----------------------------------+-----------------------------------+
  | TO_CHAR('  123.456', 'fm999.999') | TO_CHAR('  123.456', 'FM999.999') |
  +-----------------------------------+-----------------------------------+
  | 123.456                           | 123.456                           |
  +-----------------------------------+-----------------------------------+
  1 row in set

  ```

## 返回类型

- 返回 `VARCHAR` 类型的数据。
 - `number` 值为 `NULL` 时，返回 `NULL`。

## 示例

```sql
SELECT
    TO_CHAR(11111.111, '999,999.9999'),
    TO_CHAR(11111.111, '000,000.0000'),
    TO_CHAR(55555.555, '99,999.99'),
    TO_CHAR(55555.555, '99,999V99'),
    TO_CHAR(NULL, '999.999');

```

返回结果如下：

```shell
+------------------------------------+------------------------------------+---------------------------------+---------------------------------+--------------------------+
| TO_CHAR(11111.111, '999,999.9999') | TO_CHAR(11111.111, '000,000.0000') | TO_CHAR(55555.555, '99,999.99') | TO_CHAR(55555.555, '99,999V99') | TO_CHAR(NULL, '999.999') |
+------------------------------------+------------------------------------+---------------------------------+---------------------------------+--------------------------+
|   11,111.1110                      |  011,111.1110                      |  55,555.56                      |  55,55556                       |                     NULL |
+------------------------------------+------------------------------------+---------------------------------+---------------------------------+--------------------------+
1 row in set

```

## 相关文档

- [TO_CHAR(character)](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002502829)
 - [TO_CHAR(datetime)](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002502831)

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
