【发布时间】:2019-12-27 22:27:59
【问题描述】:
我有一个 postgresql 字段,它存储一个 4 元素 array。我想选择该字段的值,但它以string 的形式返回:
{43.690916,-79.396774,43.700845,-79.37125}
我假设gem 会知道该字段的格式并返回array,但我错了。
如何在不通过 string 方法的情况下将其放入 array 中?这似乎是一个黑客行为。从四个单独的 float 字段移动到具有关联方法的单个 array 字段,我认为这会使记录更易于访问。
没有迁移,并且限制性地假设这是在 Rails 中,但事实并非如此。这是结构:
Column | Type | Collation | Nullable | Default
-----------+------------------------+-----------+----------+-------------------------------------------
loc_id | integer | | not null | nextval('mjtable_loc_id_seq'::regclass)
locname | character varying(255) | | |
locbounds | double precision[] | | |
【问题讨论】:
-
将 4 个值存储到关系数据库的单个字段中看起来非常错误。违反en.wikipedia.org/wiki/First_normal_form。由于您没有解释的原因不能使用字符串方法,如果值在所有列中具有相同的格式和长度,也许可以考虑使用
SUBSTR()PG 方法从数据库中提取数据? -
该字段是
GPS区域的边界。所以两个lat/lon组合。我应该把它移到hstore吗?像这样使用 4 个字段作为浮点数只是感觉很奇怪。 -
您能否更新问题以包含您用于创建字段的迁移?
-
@Rich_F 查看我的更新答案。我认为这仍然适用于您的用例。
标签: arrays ruby postgresql pg