转换为双引号类型的不一致
Inconsistencies Casting to Double-Quoted Types
使用 postgres 12.2:
select '46ee2794-ddd1-4c4b-be04-82908ff1885d'::"uuid" /*works, uuid is a built-in type, not an alias*/
select '1'::"int4" /*works ... int4 is alias for integer*/
select '1'::"integer" /*fails ... integer is built-in type*/
我已经放弃了双引号,但我仍然很好奇为什么会这样!
这可能看起来很奇怪,但实际上 int4
是一个基类型,而 integer
是一种别名,如果我们假设基类型存储在系统目录 pg_type
中。
select oid, typname
from pg_type
where typname like 'int%'
and typcategory = 'N'
oid | typname
-----+---------
20 | int8
21 | int2
23 | int4
(3 rows)
使用 postgres 12.2:
select '46ee2794-ddd1-4c4b-be04-82908ff1885d'::"uuid" /*works, uuid is a built-in type, not an alias*/
select '1'::"int4" /*works ... int4 is alias for integer*/
select '1'::"integer" /*fails ... integer is built-in type*/
我已经放弃了双引号,但我仍然很好奇为什么会这样!
这可能看起来很奇怪,但实际上 int4
是一个基类型,而 integer
是一种别名,如果我们假设基类型存储在系统目录 pg_type
中。
select oid, typname
from pg_type
where typname like 'int%'
and typcategory = 'N'
oid | typname
-----+---------
20 | int8
21 | int2
23 | int4
(3 rows)