【问题标题】:Get specific data from Database从数据库中获取特定数据
【发布时间】:2016-10-11 22:18:52
【问题描述】:

我在从数据库中获取正确数据时遇到问题。

我有一个包含 3 列的 PRODUCTS 表:

id, Name and Category 

并且,我有一个包含 3 列的 DATA 表:

id, Name, products_id(F.K)

现在,假设我的 Products 表中有一个带有值的条目

(1, "iPhone 6S", "Mobiles") 

并且,在数据表中我有多个名称条目:

iPhone 6s 16GB, 
iPhone 6s 32GB, 
iPhone 6s Plus 16GB, 
iPhone 6s Plus 32GB 

等等。现在我只想要iPhone 6s,而不是iPhone 6s Plus

在下面的代码中,我正在更新 products_id,它匹配产品名称和数据名称。通过这样做,我得到了iPhone 6siPhone 6s Plus

我只想要iPhone 6s

@P1 = Product.where(id: 1).pluck(:Name)
@arr = @P1[0].split
Data.where("Name like ? AND Name like ? AND Name like ? AND Name like ? ", 
            "%#{@arr[0]}%", 
            "%#{@arr[1]}%", 
            "%#{@arr[2]}%", 
            "%#{@arr[3]}%").update_all(products_id:1)

现在使用上面的代码,我得到了 iPhone 6s 和 iPhone 6s Plus 前面的 products_id。我不想把它放在 iPhone 6s Plus 前面。任何其他方法也可能会有所帮助。非常感谢!

【问题讨论】:

  • Data.where(" name REGEXP ?", 'your_regex_here')

标签: mysql ruby-on-rails database database-design


【解决方案1】:

如果您想在名称上完全匹配,请搜索完整的字符串而不是使用“like”。

 name = Product.where(id: 1).pluck(:Name)
 Data.where(Name: name).updated_all(products_id: 1)

【讨论】:

  • 这将只匹配完整的字符串“iPhone 6s”,在某些条目中我喜欢“iPhone 6s 16GB”
猜你喜欢
  • 2016-05-08
  • 2013-09-02
  • 2021-10-15
  • 2021-10-25
  • 2018-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多