PostgreSQL 中类型转换

时间:2022-10-15 17:54:16

PostgreSQL中所有的类型都可以使用单引号(‘ ’)来输入。

warehouse_db=# select int '1' + int '100';
?column? 
----------
101
(1 row)

PostgreSQL支持使用标准SQL的类型转换函数CAST进行类型转换。

warehouse_db=# select CAST('5' as char),CAST('2015-10-10' as char);
bpchar | bpchar 
--------+--------
5 | 2
(1 row)

warehouse_db=# select CAST('5' as char),CAST('2015-10-10' as varchar(10));
bpchar | varchar 
--------+------------
5 | 2015-10-10
(1 row)

PostgreSQL中双冒号类型转换的简洁方式。

warehouse_db=# select '5'::int ,'2015-10-10'::date;
int4 | date 
------+------------
5 | 2015-10-10
(1 row)

一种任意类型的一个常量可以使用下列记号中的任意一种输入:

type ’string’

’string’::type

CAST ( ’string’ AS type )

字符串常量的文本被传递到名为type的类型的输入转换例程中。其结果是指定类型的一个常

量。如果对该常量的类型没有歧义(例如,当它被直接指派给一个表列时),显式类型造型

可以被忽略,在那种情况下它会被自动强制。

字符串常量可以使用常规SQL 记号或美元引用书写。

也可以使用一个类似函数的语法来指定一个类型强制:

typename ( ’string’ )

但是并非所有类型名都可以用在这种方法中,::、CAST()以及函数调用语法也可以被用来指定任意表达式的运行时类型转换。要避免语法歧义,type ’string’语法只能被用来指定简单文字常量的类型。type ’string’语法上的另一个限制是它无法对数组类型工作,指定一个数组常量的类型可使用::或CAST()。

CAST()语法符合SQL。type ’string’语法是该标准的一般化:SQL 指定这种语法只用于一些数据类型,但是PostgreSQL允许它用于所有类型。带有::的语法是PostgreSQL的历史用法,就像函数调用语法一样。

参考资料:https://www.cnblogs.com/stephen-liu74/archive/2012/04/30/2293602.html

这位老师写的很全面。学习了