# Finding numeric maximum of numbers when they're stored as st

I have a field used to hold the number of a publication’s volume
series. The field is defined as type string, since in most cases
it’s used as a string and I’m not doing any calculations with it.

How can I find the numerical maximum of the field and not the
alphabetic maximum? I want…

3 < 17

and not…

“17” < “3”

I can convert the field to be type integer, but I wondered if there’s
a trick with the maximum method that I could use. I tried passing
‘CAST(number AS UNSIGNED)’ to the conditions option. But it didn’t
change the result.

Jose

You have to convert the String object to integer by using to_i method.
If the values are stored in an array, you can do : [2,5,8].max to get
the maximum value. So the answer is that there is no trick that can
compare without converting it to an integer.

Jose Hales-Garcia wrote:

I have a field used to hold the number of a publication’s volume
series. The field is defined as type string, since in most cases
it’s used as a string and I’m not doing any calculations with it.

p [ “17”, “3” ].max
#=> 3

p [ “17”, “3” ].map{ |s| s.to_i }.max
#=> 17