PostgreSQL 教程: to_number 函数

九月 20, 2023

PostgreSQL 的TO_NUMBER()函数将字符串转换为数值

语法

PostgreSQL 的TO_NUMBER()函数的语法如下:

TO_NUMBER(string, format)

参数

TO_NUMBER()函数需要两个参数。

1) string

要转换为数字的字符串。其格式必须是文字值。

2) format

格式参数指示应如何解析第一个参数来创建数字。

下表说明了有效格式的列表:

格式 描述
9 具有指定位数的数值
0 带有前导零的数值
.(点号) 小数点
D 区域相关的小数点
,(逗号) 分组(千)分隔符
FM 填充模式,抑制填充空白和前导零。
PR 尖括号中的负值。
S 锚定到区域相关的数字的符号
L 区域相关的货币符号
G 区域相关的分组分隔符
MI 对于小于 0 的数字,在指定位置添加负号。
PL 对于大于 0 的数字,在指定位置添加正号。
SG 指定位置的正号/负号
RN 罗马数字,范围从 1 到 3999
TH 或 th 大写或小写序数后缀

请注意,这些格式字符串也适用于TO_CHAR()函数。

返回值

TO_NUMBER()函数返回一个数据类型为numeric的值。

示例

让我们看一下使用TO_NUMBER()函数的一些示例,以了解它的工作原理。

A) 将字符串转换为数字

以下语句将字符串 ‘12,345.6-’ 转换为数字。

SELECT
    TO_NUMBER(
        '12,345.6-',
        '99G999D9S'
    );

输出是:

 to_number
-----------
  -12345.6
(1 row)

B) 将金额转换为数字

以下示例显示如何将金额转换为数字:

SELECT
    TO_NUMBER(
        '$1,234,567.89',
        'L9G999g999.99'
    );

结果如下:

 to_number
-----------
 1234567.89
(1 row)

C) 格式控制

如果在格式字符串中未指定 .99,TO_NUMBER()函数将不会解析小数点后的部分。

请参见以下示例:

SELECT
    TO_NUMBER(
        '1,234,567.89',
        '9G999g999'
    );

它返回 1234567 而不是 1234567.89,如下所示:

 to_number
-----------
   1234567
(1 row)

在本教程中,您学习了如何使用 PostgreSQL 的TO_NUMBER()函数,将字符串转换为数值。