如何解决存储长数字串的最佳数据结构
我有一列数字(每个数字的最大长度为14位数字),每个数字中的每个字符均为数字(因此数字内没有字母或特殊字符)。
我尝试将数据类型int4
和int8
分配给numbers列,然后将该表加载到Redshift(PostgreSQL)中。但是,我不断收到以下错误:
numeric value "9555739320" out of range for integer
这让我感到困惑,因为我认为int8是bigint
类型,可以存储非常大的数字,如会话 8.1中所述。此网站中的数字类型:https://www.postgresql.org/docs/current/datatype-numeric.html。如果我的理解是正确的,为什么数字“ 9555739320”超出范围?
是否有任何建议将此数字列分配给哪种数据类型?假设某些数字可能以0开头,例如“ 000223568960”,而我想保留包括0在内的所有数字。
解决方法
您的错误消息明确指出:
数值“ 9555739320”超出整数范围
“整数”。如果您实际尝试分配给int8
列,则错误消息将显示为“ bigint”,而不是“ integer”。除此之外,因为9555739320很容易在-9223372036854754775808到9223372036854775807的bigint范围内-就像您自己说的那样。
int8
是bigint
的别名。int4
或仅int
是integer
的别名。
让我们说某些数字可能以0开头,例如“ 000223568960”,我想保留包括0在内的每个数字。
如果要保留可变数量的前导零,则不能使用任何numeric data types来修剪这种微不足道的噪声。改用text
或varchar
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。