Thread: Get max value from an comma separated string

Get max value from an comma separated string

From
Mauro Bertoli
Date:
Hi, I've a field that contain values-comma-separated
like
A) 1;2;3;;5  -- ;2;;4;5
but also
B) 12;34;18
how I can get the max value?
For A I tried:
SELECT max(array_upper(string_to_array(answer,';'),1))
FROM values;
and work fine, but for B case I don't find a solution
like
SELECT max(string_to_array(answer,';')) FROM values;

Any ideas?
Thanks for any hint

Chiacchiera con i tuoi amici in tempo reale! http://it.yahoo.com/mail_it/foot/*http://it.messenger.yahoo.com 


Re: Get max value from an comma separated string

From
Bruno Wolff III
Date:
On Mon, May 29, 2006 at 13:22:38 +0200, Mauro Bertoli <bertolima@yahoo.it> wrote:
> Hi, I've a field that contain values-comma-separated
> like
> A) 1;2;3;;5  -- ;2;;4;5
> but also
> B) 12;34;18
> how I can get the max value?
> For A I tried:
> SELECT max(array_upper(string_to_array(answer,';'),1))
> FROM values;
> and work fine, but for B case I don't find a solution
> like
> SELECT max(string_to_array(answer,';')) FROM values;
> 
> Any ideas?
> Thanks for any hint

Don't store the data like that in the database if possible.


Re: Get max value from an comma separated string

From
Bricklen Anderson
Date:
Mauro Bertoli wrote:
> Hi, I've a field that contain values-comma-separated
> like
> A) 1;2;3;;5  -- ;2;;4;5
> but also
> B) 12;34;18
> how I can get the max value?
> For A I tried:
> SELECT max(array_upper(string_to_array(answer,';'),1))
> FROM values;
> and work fine, but for B case I don't find a solution
> like
> SELECT max(string_to_array(answer,';')) FROM values;
> 
> Any ideas?
> Thanks for any hint
> 
You could try rearranging the values into rows, like so:

CREATE OR REPLACE FUNCTION text2rows (TEXT,TEXT) RETURNS SETOF TEXT AS $$
SELECT (string_to_array($1, $2))[x.i]
FROM generate_series(1,array_upper(string_to_array($1,$2),1)) AS x(i);
$$ language sql strict;

select max(val)
from (SELECT text2rows(answer,';') as val FROM answer) as t;