目录
详细信息https://support.highgo.com/#/index/docContent/630fe57504448136
文档用途
seg模块提供了一种数据类型seg,它用于表示线段或者浮点区间。seg可以表示区间端点中的不确定性,这使得它在表示实验测量的数据时特别有用。
详细信息
进行几何学测量时,由于不确定性和随机性,测量值可能是表示特定条件的区间,例如一个温度范围区间。
举个例子,进行几何学测量时,我们把使用仪器测出的值放到数据库中。当以后再从数据库中取出这个值时,得到的结果可能会出现差异。
首先创建扩展:
highgo=# create extension seg; CREATE EXTENSION |
假设当时存入数据库中几个精确的高度值,再次查询时,得到的值的精确度可能会不同。
highgo=# create table measurement(height float8); CREATE TABLE highgo=# insert into measurement values(4.30); INSERT 0 1 highgo=# insert into measurement values(4.56); INSERT 0 1 highgo=# select * from measurement; height -------- 4.3 4.56 (2 rows) |
值得注意的是,在测量学领域里,4.30和4.3可能表示的是截然不同的意义。4.30可能被包含于4.3这个区间之内,所以通常我们不希望这些不同的数据项看起来是相同的。
此时,如果使用seg模块提供的seg数据类型,就可以记录带有任意可变精度的区间。这是非常有用的,每个数据元素会记录它自己的精度。
举例如下:
用seg数据类型表示带精度的pH值区间:
highgo=# select '3.25 .. 3.50' :: seg as "pH"; pH -------------- 3.25 .. 3.50 (1 row) |
在seg这种数据类型中,一个区间的外部表达是一个或两个浮点数,中间使用 “..” 或 “...” 分隔。也可以使用一个中心点加上(或减去)一个偏差值的方式,例如‘5(+-)2’。
作为seg的一种完整性检查,如果区间的下界比上界大,会导致报错。例如 “10 ... 2”
highgo=# select '10 .. 2' :: seg as "rank"; ERROR: 22023: swapped boundaries: 10 is greater than 2 LINE 1: select '10 .. 2' :: seg as "rank"; ^ |
更多详细信息请登录【瀚高技术支持平台】查看