【问题标题】:How to search psql array elements by index in rails如何通过rails中的索引搜索psql数组元素
【发布时间】:2019-12-21 15:02:56
【问题描述】:

在我的 rails psql 应用程序中,我有一个电子邮件数组列。此列的第一个索引中的元素是主电子邮件。我希望能够在数据库中搜索所有使用主电子邮件 x 的人。

【问题讨论】:

    标签: ruby-on-rails arrays postgresql


    【解决方案1】:

    无需测试是否包含数组。只需获取第一个元素并将其与字符串进行比较:

    User.where("emails[1] = ?", "x@test.com")
    

    【讨论】:

    • 谢谢,更容易理解。我做了一些 Benchmark.measure 来与 Array 包含的答案进行比较,性能似乎差别不大。
    【解决方案2】:

    我在文档中看不到这一点,但感谢 this answer 我可以看到在 Postgres 9.5 或更早版本中您可以使用

    arr[1:1]

    只查看第一个元素的语法

    这就是答案

    User.where("emails[1:1] @> ARRAY[?]", "x@test.com")

    【讨论】:

      猜你喜欢
      • 2020-02-08
      • 2016-05-24
      • 2011-09-08
      • 1970-01-01
      • 1970-01-01
      • 2015-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多