Postgresql 如何进行允许按部分值查找的活动记录查询

Postgresql 如何进行允许按部分值查找的活动记录查询,postgresql,activerecord,ruby-on-rails-4,Postgresql,Activerecord,Ruby On Rails 4,我有模型票。此模型有:number列。 我决定用票号的前7位数字在数据库中搜索票证。我不知道如何在数据库上进行活动记录查询来实现我的目标。 我试过了 ticket = Ticket.where("(/^\S{7}) number = ?", "#{n}") 但这毫无意义,搜索了两天的答案。misa 这应该做到: # Makes numbers like '123' become '0000123' # or takes first 7 digits if number is longer th

我有模型票。此模型有:number列。 我决定用票号的前7位数字在数据库中搜索票证。我不知道如何在数据库上进行活动记录查询来实现我的目标。 我试过了

ticket = Ticket.where("(/^\S{7}) number = ?", "#{n}")
但这毫无意义,搜索了两天的答案。

misa

这应该做到:

# Makes numbers like '123' become '0000123'
# or takes first 7 digits if number is longer than 7 digits:
n = sprintf("%07d", n).first(7)

# Searches for anything starting with those 7 digits.
tickets = Ticket.where("number like '#{n}%'")
如果您认为db中只有一张这样的票证,只需执行
find_by
,而不是
where

ticket = Ticket.find_by("number like '#{n}%'")
如果
number
字段不是字符串,而是数字,则需要通过执行以下操作键入cast:

ticket = Ticket.find_by("CAST(number AS varchar) like '#{n}%'")

如果您需要更多帮助,请告诉我。

您在查询中是否尝试过like运算符,like运算符就是我要找的,谢谢您的建议