我的数据库设计有一个奇怪的情况。我的情况是字段的值类型可以是普通整数或范围之间的数字。我用一个例子解释自己:
列年龄可以是数字(18)或(18-30)之间的范围。我如何用postgresql表示这个?
THX!
答案 0 :(得分:3)
整数range可以表示单个整数值和范围。单个值:
select int4range(18,18,'[]');
int4range
-----------
[18,19)
上述结果中的")"
表示独占。
范围:
select int4range(18,30,'[]');
int4range
-----------
[18,31)
答案 1 :(得分:1)
有几种不同的方法可以做到这一点。
答案 2 :(得分:1)
你可以设一个更大的数字,例如18 18 x 1000 + 0 = 18000
和{18} 18 x 1000 + 30 = 18030
。
检索时,您会为第一个号码first = round(number/1000)
和第二个号码second = number - first
。
您也可以将它们存储为http://www.postgresql.org/docs/9.4/static/datatype-geometric.html#AEN6730点。