在 PostgreSQL 中,to_number
函数用于将字符串类型的数字转换为实际的数值类型(如整数或浮点数)。此函数对于将具有特定格式的字符串解析为数字非常有用。
语法
to_number(text, text)
- 第一个参数:需要转换的字符串。
- 第二个参数:格式模式字符串,用于指定输入字符串的格式。
格式模式
格式模式字符串使用以下符号:
9
:表示一个数字。0
:表示一个前导零。.
:表示小数点。,
:表示千位分隔符。L
:表示货币符号。S
:表示正负号。PR
:表示放置在最后的负号。
示例
示例 1:将字符串转换为数字
将简单的字符串转换为数字:
SELECT to_number('12345', '99999');
输出结果为:
12345
示例 2:处理小数点
将包含小数点的字符串转换为数字:
SELECT to_number('12345.67', '99999.99');
输出结果为:
12345.67
示例 3:处理千位分隔符
将包含千位分隔符的字符串转换为数字:
SELECT to_number('12,345.67', '99,999.99');
输出结果为:
12345.67
示例 4:处理货币符号
将包含货币符号的字符串转换为数字:
SELECT to_number('$12,345.67', 'L99,999.99');
输出结果为:
12345.67
示例 5:处理负数
将负数字符串转换为数字:
SELECT to_number('12345-', '99999S');
输出结果为:
-12345
注意事项
- 格式匹配:输入字符串必须与格式模式匹配,否则会导致错误。
- 非数字字符:除了格式模式中允许的符号,输入字符串中的其他非数字字符将导致错误。
- 前导和后缀:可以使用前导和后缀符号,如货币符号或正负号,但必须正确放置。
总结
to_number
函数是将格式化的字符串转换为数值的强大工具。通过理解和使用格式模式,可以灵活地处理各种数字格式的字符串。