Thread: Get max value from an comma separated string
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
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.
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;