Postgres 中的 int128 或 16 字节整数

int128 or 16 byte integers in postgres

提问人:yingw 提问时间:11/8/2023 更新时间:11/8/2023 访问量:46

问:

有没有办法在postgres中声明无符号类型的整数我需要能够摄取/表示16字节整数。int128

我看到它有一个 .h 文件,但没有看到任何实现示例

PostgreSQL数据库

评论


答:

2赞 The Impaler 11/8/2023 #1

可以使用 DECIMAL 类型存储 128 位整数。

例如:

create table t (p int , value decimal(39),
  check (value between -170141183460469231731687303715884105728::decimal(39)
                   and  170141183460469231731687303715884105727::decimal(39))
  );

结果:

    p                                     value  
 ----- ----------------------------------------- 
   15                                     32768  
   16                                     65536  
   31                                2147483648  
   32                                4294967296  
   63                       9223372036854775808  
   64                      18446744073709551616  
  127   170141183460469231731687303715884105727  

请参阅 db<>fiddle 中的运行示例。

请注意,最后一次插入失败,因为该值比 128 位精度高出一个单位。