sql – 如何查询存储在数组中的Rails ActiveRecord数据
发布时间:2020-07-31 16:09:15 所属栏目:MsSql 来源:互联网
导读:我有一个rails模型调用MentorData,它有一个名为os_usage的属性. ose存储在一个像[‘apple’,’ linux‘]这样的数组中. 回顾一下: $MentorData.first.os_usage= [apple, linux] 我希望能够查询包含苹果os_usage的所有MentorData的数据,但是当我搜索MentorData
我有一个rails模型调用MentorData,它有一个名为os_usage的属性. ose存储在一个像[‘apple’,’ linux‘]这样的数组中. 回顾一下: $MentorData.first.os_usage => ['apple','linux'] 我希望能够查询包含苹果os_usage的所有MentorData的数据,但是当我搜索MentorData.where(os_usage:’apple’)时,我只会得到只能使用苹果而不是苹果和Linux的导师.我需要以某种方式搜索,检查数组中是否包含apple. 我也尝试了以下内容. MentorData.where('os_usage like ?','apple’) MentorData.where('os_usage contains ?','apple’) MentorData.where('os_usage contains @>ARRAY[?]','apple') 是否可以通过具有数组或项的属性在ActiveRecord中查询数据? 如果这有助于提供更原始的搜索查询,则数据库位于Postgres上. 解决方法以下是当前 Rails Edge Guides中给出的示例:# db/migrate/20140207133952_create_books.rb create_table :books do |t| t.string 'title' t.string 'tags',array: true t.integer 'ratings',array: true end add_index :books,:tags,using: 'gin' add_index :books,:ratings,using: 'gin' # app/models/book.rb class Book < ActiveRecord::Base end # Usage Book.create title: "Brave New World",tags: ["fantasy","fiction"],ratings: [4,5] ## Books for a single tag Book.where("'fantasy' = ANY (tags)") ## Books for multiple tags Book.where("tags @> ARRAY[?]::varchar[]",["fantasy","fiction"]) ## Books with 3 or more ratings Book.where("array_length(ratings,1) >= 3") (编辑:鄂州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- SQL Server修改标识列方法 如自增列的批量化修改
- sqlserver 多库查询 sp_addlinkedserver使用方法
- sql-server – Visual Studio SSDT数据比较如何比
- 自动定时备份sqlserver数据库的方法
- sql – 复杂的字段“string – number – string
- sqlserver 修改列名及表名的sql语句
- SQL Server -- 回忆笔记(三):ADO.NET之C#操作
- sql-server – 什么是阻塞,它是如何发生的?
- SQL server 使用 内联结(INNER JOIN) 联结多个表
- sql-server – SQL Server中EXPLAIN表单SQLite的
热点阅读