You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中int2vector与int2array的区别?含int4vector/int4array相关疑问

生成PostgreSQL的int2vector/int4vector类型值

基础背景

int2vector、int4vector是PostgreSQL的内部系统类型,主要用于系统目录(如pg_trigger)存储固定长度的小整数序列,官方公开文档对这类类型的说明有限。它们和同基础类型的array(int2[]/int4[])存储逻辑相似,但OID不同(int2vector OID为22,int2[]为1005;int4vector OID为27,int4[]为1007)。

生成方式

1. 直接调用类型构造函数

内部类型自带构造函数,传入数组格式字符串即可生成对应类型值:

  • 生成int2vector:
    SELECT int2vector('{1,2}');
    
  • 生成int4vector:
    SELECT int4vector('{10,20,30}');
    

2. 从对应array类型强制转换

利用vector与同类型array的相似性,先构造array再转换:

  • int2[]转int2vector:
    SELECT '{1,2}'::int2[]::int2vector;
    -- 或者CAST语法
    SELECT CAST('{1,2}' AS int2vector);
    
  • int4[]转int4vector:
    SELECT '{10,20}'::int4[]::int4vector;
    

libpq二进制交互注意事项

在libpq二进制模式下处理这些类型时:

  • int2vector的二进制格式是无长度前缀的int16(2字节整数)数组,和int2[]的二进制格式(带数组头信息)不同
  • int4vector的二进制格式是无长度前缀的int32(4字节整数)数组
  • 可通过系统表查看类型存储细节:
    SELECT typname, typlen, typstorage FROM pg_type WHERE typname IN ('int2vector', 'int4vector');
    

内容的提问来源于stack exchange,提问作者Eric Grange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 04:35:30