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

在PostgreSQL中存储评分应使用何种数据类型?

解决PostgreSQL评分字段的数据类型选择问题

为什么smallint(6)在PostgreSQL不生效

PostgreSQL里的整数类型(包括smallint)不支持类似MySQL的括号指定显示宽度,smallint(6)会被直接解析为普通的smallint,它的固定范围是 -32768 到 32767,括号里的数字没有实际作用。

评分字段的类型选择建议

根据评分的实际场景,推荐以下几种类型:

1. 整数类(适合固定分值的评分,比如1-5星、0-10分)

  • smallint:如果评分范围在-32768到32767之间(绝大多数评分场景都满足),直接用smallint就足够,无需加括号。
  • integer:如果未来可能扩展评分范围(比如0-100分甚至更高),用integer更稳妥,范围是-2147483648到2147483647,完全覆盖常见评分需求。

2. 小数类(适合带小数的评分,比如4.5分、8.9分)

  • numeric(precision, scale):比如numeric(3,1)可以存储0.0到99.9的评分,精度和小数位数完全可控,适合需要精确小数的场景。
  • real/double precision:如果对精度要求不高(比如允许微小的浮点误差),可以用这两种浮点类型,存储范围更大,但可能存在精度丢失问题。

3. 自定义枚举类型(适合固定选项的评分,比如星级)

如果评分是固定的几个选项(比如1星到5星),可以创建枚举类型:

CREATE TYPE rating_star AS ENUM ('1', '2', '3', '4', '5');

之后字段就可以用rating_star类型,能强制限制输入的有效值,避免非法评分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 22:27:26