Postgresql 如何进行允许按部分值查找的活动记录查询
我有模型票。此模型有:number列。 我决定用票号的前7位数字在数据库中搜索票证。我不知道如何在数据库上进行活动记录查询来实现我的目标。 我试过了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
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运算符就是我要找的,谢谢您的建议