postgres-bigint超出范围错误,该数据类型用于很大的数字

圣蒂诺

我正在尝试存储一些哈希(本来是十六进制的),但是我将它们强制转换为int以保存在pgsql中,但得到了

select 12347933502038296527::bigint

ERROR:  bigint out of range
********** Error **********
ERROR: bigint out of range
SQL state: 22003

我意识到该数字对于int8type来说太大了,我应该使用哪种数据类型而不是int8?decimal适合我的情况吗?还有什么其他策略可以挽救如此庞大的数量?

戈登·利诺夫

Bigint的很大。需要比这更大的东西是不寻常的。在大多数数据库中,使用本机二进制表示形式就可以做到这一点。Decimal/numeric通常允许稍高的精度。

相比之下,Postgres支持numeric/decimal基本上没有限制的精度,如文档中所述

以下直接起作用:

select 12347933502038296527::decimal

如果您想更具体:

select 12347933502038296527::decimal(20, 0)

也就是说,通常将如此大的数字用作ID。在这种情况下,您可能要使用字符串而不是数字表示形式。例如,字符串具有保留前导零的优势。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Postgres:整数超出范围

Postgres 整数超出范围

从bigint数据类型中提取Postgres时间戳记的日期

Postgres数据类型转换

Postgres:将布尔数据类型重写为数字

Postgres:整数超出范围。为什么会发生此错误?

使用java.util.Date输入的Postgres上的时间戳超出范围错误

Postgres-PreparedStatement中的列超出范围-Java

Postgres JSON数据类型Rails查询

按JSON数据类型postgres排序

Postgres C 扩展数据类型定义

错误:varchar 数据类型到日期时间数据类型导致错误值超出范围

Postgres UUID类型错误

varchar数据类型到datetime数据类型的转换导致超出范围的值MVC5中的错误

将varchar数据类型转换为日期时间。超出范围的错误

SQL Server浮动数据类型超出范围

SQL Server数据类型用于很大的数字

Postgres中数字数据类型的精度和小数位数是多少?

范围导致Postgres中的错误

将 varchar 数据类型转换为 datetime 数据类型导致值超出范围

将 datetime2 数据类型转换为 datetime 数据类型导致值超出范围。该语句已终止

我的控制器中Postgres数据类型不匹配的Heroku WHERE错误

node-postgres上的postgres复合类型

Knex在Postgres中创建POINT数据类型

如何使用Postgres的JSONB数据类型与JPA?

固定大小字符串的Postgres数据类型

如何在Postgres中级联表的列的数据类型

H2 - Postgres 模式支持 net 数据类型

如何使用go pg CRUD Postgres Point数据类型