如何使用Ruby on Rails找到列中最长的字符串?

Tin*_*n81 2 ruby ruby-on-rails ruby-on-rails-3

Ruby中从列中找到最长字符串的最有效方法是什么X

更新:

这也是有效的:

def self.length_of_longest_number
  Invoice.order("LENGTH(number) DESC").first.number.length
end
Run Code Online (Sandbox Code Playgroud)

只是想知道是否有效.如果它适用于MySQL Postgres ......

Tin*_*n81 7

这也是有效的:

def self.length_of_longest_number
  Invoice.order("LENGTH(number) DESC").first.number.length
end
Run Code Online (Sandbox Code Playgroud)

只是想知道是否有效.如果它适用于MySQL Postgres ......

  • 建议您将此添加到您的问题中,而不是将其作为答案发布. (2认同)

Bvu*_*Ic7 6

# Change your model name and field to your needs
Participant.order("MAX(CHAR_LENGTH(first_name)) desc").limit(1)

# works too:
Participant.order("MAX(CHAR_LENGTH(first_name)) desc").first

# and this is the most efficient to get the field directly:
Participant.limit(1).order("MAX(CHAR_LENGTH(first_name)) desc").pluck(:first_name)
Run Code Online (Sandbox Code Playgroud)

  • 对于我在Postgres中,它不适用于错误`PG :: Error:ERROR:column"participant.name"必须出现在GROUP BY子句中或用于聚合函数`,但是使用`Participants.limit(1 ).order("MAX(CHAR_LENGTH(name))desc").group("id").pluck(:name)`它的工作原理 (7认同)