查询SQL DB以查找列中的特定字符串

时间:2016-01-05 19:03:47

标签: sql ruby-on-rails sqlite

我有一个rails应用程序,我希望在我的控制器中创建一个查询我的SQLite DB的动作,并返回一个在DB列中有特定字符串的链接。

例如,我有一个links表,列category。我希望我的控制器能够获得所有具有movies字符串的类别。

这个查询是什么样的?我发布了我到目前为止的架构和控制器,但是我被卡住了。

links_controller:

  def find_category
    Link.where("SELECT category FROM links WHERE links LIKE '%movies%'")
  end

链接表:

  create_table "links", force: :cascade do |t|
    t.string   "title"
    t.string   "url"
    t.datetime "created_at",                     null: false
    t.datetime "updated_at",                     null: false
    t.integer  "user_id"
    t.integer  "cached_votes_total", default: 0
    t.integer  "cached_votes_score", default: 0
    t.integer  "cached_votes_up",    default: 0
    t.integer  "cached_votes_down",  default: 0
    t.string   "avatar"
    t.string   "category"
  end

2 个答案:

答案 0 :(得分:1)

这是LIKE查询的语法。您可能希望使用distinct只选择一次重复值。

Link.distinct(:category).where("category LIKE ?", "%movies%").pluck(:category)

如果要将其打包在方法

def find_category
  Link.distinct(:category).where("category LIKE ?", "%movies%").pluck(:category)
end

答案 1 :(得分:0)

def find_category
    Link.where("SELECT category FROM links WHERE links LIKE '%movies%'")
  end

您参考'链接'该查询中有两次,如果不是WHERE category LIKE %movies%