一、概览
在实际的开发工作中,经常需要将字符串转换为数字类型进行运算或者比较。在pgsql中,字符串转数字十分常见,因此对于pgsql字符串转数字的转换方法有了系统性的整理。
二、转换方法详解
1、to_number()
to_number是pgsql中最常用的字符串转数字函数。其基本语法如下:
to_number(text, text)
第一个参数text是要被转换为数字类型的串,第二个参数text是描述数据类型的模式串。
下面是示例:
SELECT to_number('1001.001', '9999.999');
结果:1001.001
to_number函数会按照第二个参数中指定的模式串将第一个参数text转换为数字类型。
2、cast()
cast函数是pgsql中常用的强制类型转换函数,可以将任意数据类型强制转换为指定数据类型。其基本语法如下:
CAST ( expression AS type )
expression是要强制转换的参数,type是指定要转换的数据类型,type可以是pgsql中任意数据类型。
下面是示例:
SELECT CAST('12345' AS INTEGER);
结果:12345
在这个例子中,'12345'被强制转换为INTEGER类型。
3、::操作符
在pgsql中,可以使用::操作符来进行强制类型转换。基本语法如下:
expression::type
expression是要强制转换的参数,type是指定的数据类型。
下面是示例:
SELECT '12345'::INTEGER;
结果:12345
在这个例子中,'12345'被强制转换为INTEGER类型。
三、转换注意事项
1、格式化字符串
to_number()函数要求字符串必须为合理的数值格式,否则会抛出错误。比如,第二个参数为'9999.999',那么to_number('abc', '9999.999')就会返回错误。
而在使用cast()和::操作符的时候,则不需要字符串为合理的数值格式,只需要符合强制转换的数据类型即可。
2、小数位数
在to_number()函数中,如果数字包含小数位,那么第二个参数应该包含小数位数,否则会导致错误。
而在cast()和::操作符中,则对小数位数没有硬性要求。
3、类型匹配
在使用cast()和::操作符进行类型转换时,如果要强制转换的数据类型与表中的列类型不匹配,会抛出类型不匹配的错误。
四、示例代码
1、to_number()
SELECT to_number('12345', '99999');
2、cast()
SELECT CAST('12345' AS INTEGER);
3、::操作符
SELECT '12345'::INTEGER;