All Products
Search
Document Center

MaxCompute:FORMAT_NUMBER

Last Updated:Jan 24, 2024

FORMAT_NUMBER is an additional function of MaxCompute V2.0. The FORMAT_NUMBER function converts an expression into a string in the specified format. For example, you can use this function to convert an expression into a string that uses thousands separators. You can also use this function to specify the number of decimal places that you want to retain. This topic describes the syntax and parameters of the FORMAT_NUMBER function. This topic also provides examples on how to use the FORMAT_NUMBER function.

Syntax

string format_number(float|double|decimal <expr1>, <expr2>)

Parameters

  • expr1: required. This parameter specifies the expression that you want to format. A value of the DOUBLE, BIGINT, INT, SMALLINT, TINYINT, FLOAT, DECIMAL, or STRING type.

  • expr2: required. This parameter specifies the format of the expression after the conversion. It can specify the number of decimal places that you want to retain. It can also be expressed in a format similar to #,###,###.##.

Return value

A value of the STRING type is returned. The return value varies based on the following rules:

  • If expr2 is greater than 0, the value is rounded to the specified place after the decimal point.

  • If expr2 is equal to 0, the value has no decimal point or decimal part.

  • If expr2 is less than 0 or greater than 340, an error is returned.

  • If the value of expr1 or expr2 is null, null is returned.

Sample data

This section provides sample source data and examples for you to understand how to use the function. In this topic, a table named mf_math_fun_t is created and data is inserted into the table. Sample statements:

create table if not exists mf_math_fun_t(
     int_data     int,
     bigint_data  bigint,
     double_data  double,
     decimal_data decimal,
     float_data   float,
     string_data  string
    );
insert into mf_math_fun_t values
(null, -10, 0.525, 0.525BD, cast(0.525 as float), '10'),
(-20, null, -0.1, -0.1BD, cast(-0.1 as float), '-10'),
(0, -1, null, 20.45BD, cast(-1 as float), '30'),
(-40, 4, 0.89, null, cast(0.89 as float), '-30'),
(5, -50, -1, -1BD, null, '50'),
(-60, 6, 1.5, 1.5BD, cast(1.5 as float), '-50'),
(-1, -70, -7.5, -7.5BD, cast(-7.5 as float),null ),
(-80, 1, -10.2, -10.2BD, cast(-10.2 as float), '-1' ),
(9, -90, 2.58, 2.58BD, cast(2.58 as float), '0'),
(-100, 10, -5.8, -5.8BD, cast(-5.8 as float), '-90');

Query data from the mf_math_fun_t table. Sample statement:

select * from mf_math_fun_t;
-- The following result is returned: 
+------------+-------------+-------------+--------------+------------+-------------+
| int_data   | bigint_data | double_data | decimal_data | float_data | string_data |
+------------+-------------+-------------+--------------+------------+-------------+
| NULL       | -10         | 0.525       | 0.525        | 0.525      | 10          |
| -20        | NULL        | -0.1        | -0.1         | -0.1       | -10         |
| 0          | -1          | NULL        | 20.45        | -1.0       | 30          |
| -40        | 4           | 0.89        | NULL         | 0.89       | -30         |
| 5          | -50         | -1.0        | -1           | NULL       | 50          |
| -60        | 6           | 1.5         | 1.5          | 1.5        | -50         |
| -1         | -70         | -7.5        | -7.5         | -7.5       | NULL        |
| -80        | 1           | -10.2       | -10.2        | -10.2      | -1          |
| 9          | -90         | 2.58        | 2.58         | 2.58       | 0           |
| -100       | 10          | -5.8        | -5.8         | -5.8       | -90         |
+------------+-------------+-------------+--------------+------------+-------------+

Example: static data

-- The return value is 5.230. 
select format_number(5.230134523424545456,3);
-- The return value is 12,332.123. 
select format_number(12332.123456, '#,###,###,###.###');
-- The return value is null. 
select format_number(null,3);

Example: table data

Retain values in all columns to the specified number of decimal places based on the sample data. Sample statement:

-- Enable the MaxCompute V2.0 data type edition. Commit this command along with the SQL statement. 
set odps.sql.type.system.odps2=true;
select format_number(int_data, 1) as int_new, format_number(bigint_data, 1) as bigint_new, format_number(double_data, 2) as double_new, format_number(decimal_data, 1) as decimal_new, format_number(float_data, 0) as float_new, format_number(string_data, 1) as string_new from mf_math_fun_t;

The following result is returned:

+---------+------------+------------+-------------+-----------+------------+
| int_new | bigint_new | double_new | decimal_new | float_new | string_new |
+---------+------------+------------+-------------+-----------+------------+
| NULL    | -10.0      | 0.53       | 0.5         | 1         | 10.0       |
| -20.0   | NULL       | -0.10      | -0.1        | -0        | -10.0      |
| 0.0     | -1.0       | NULL       | 20.5        | -1        | 30.0       |
| -40.0   | 4.0        | 0.89       | NULL        | 1         | -30.0      |
| 5.0     | -50.0      | -1.00      | -1.0        | NULL      | 50.0       |
| -60.0   | 6.0        | 1.50       | 1.5         | 2         | -50.0      |
| -1.0    | -70.0      | -7.50      | -7.5        | -8        | NULL       |
| -80.0   | 1.0        | -10.20     | -10.2       | -10       | -1.0       |
| 9.0     | -90.0      | 2.58       | 2.6         | 3         | 0.0        |
| -100.0  | 10.0       | -5.80      | -5.8        | -6        | -90.0      |
+---------+------------+------------+-------------+-----------+------------+

Related functions

FORMAT_NUMBER is a mathematical function or a string function.

  • For more information about functions related to data computing and conversion, see Mathematical functions.

  • For more information about functions related to string searches and conversion, see String functions.