2015-11-25 70 views
-1

我在设计数据库时出现了一个奇怪的情况。我有这样的情况,一个字段的值的类型可以是一个正常的整数或范围之间的数字。我用一个例子来解释我自己:数值范围数据类型postgresql

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

THX!

+1

Postgres有一个内置的[整数范围类型](http://www.postgresql.org/docs/9.4/static/rangetypes.html) –

+0

另外一个内置在'numrange'(对于'numeric'范围),或者[你可以创建额外的范围类型](http://www.postgresql.org/docs/current/static/rangetypes.html#RANGETYPES-DEFINING)。 – pozs

回答

1

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

  1. Store中VARCHAR
  2. 存储两个值下限和上限
  3. 如果只有一组选定的范围,你可以创建该组查找表和存储外键,它查找表。
+0

啊太棒了!谢谢!!我想在第一个选项:)但第三个是更多我需要的!超 –

3

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

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

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

范围:

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