数据范围数据类型postgresql

时间:2015-11-25 10:48:32

标签: postgresql

我的数据库设计有一个奇怪的情况。我的情况是字段的值类型可以是普通整数或范围之间的数字。我用一个例子解释自己:

列年龄可以是数字(18)或(18-30)之间的范围。我如何用postgresql表示这个?

THX!

3 个答案:

答案 0 :(得分:3)

整数range可以表示单个整数值和范围。单个值:

select int4range(18,18,'[]');
 int4range 
-----------
 [18,19)

上述结果中的")"表示独占。

范围:

select int4range(18,30,'[]');
 int4range 
-----------
 [18,31)

答案 1 :(得分:1)

有几种不同的方法可以做到这一点。

  1. 存储VARCHAR
  2. 存储两个值下限和上限
  3. 如果只有一组选择范围,则可以为该组创建查找表,并将外键存储到该查找表中。

答案 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点。