Re: LEAST and GREATEST functions?
От | Joe Conway |
---|---|
Тема | Re: LEAST and GREATEST functions? |
Дата | |
Msg-id | 3F01ED9F.3060704@joeconway.com обсуждение исходный текст |
Ответ на | Re: LEAST and GREATEST functions? (Greg Stark <gsstark@mit.edu>) |
Ответы |
Re: LEAST and GREATEST functions?
Re: LEAST and GREATEST functions? |
Список | pgsql-sql |
Greg Stark wrote: > SELECT greatest(a,b) FROM bar > > would return one tuple for every record in the table with a single value > representing the greater of bar.a and bar.b. > > You could define your own functions to do this but it would be tiresome to > define one for every datatype. > In 7.4devel (just starting beta) you can do this: create or replace function greatest(anyelement, anyelement) returns anyelement as 'select case when $1 > $2 then $1 else $2 end' language 'sql'; regression=# select greatest(1, 2); greatest ---------- 2 (1 row) regression=# select greatest('b'::text, 'a'); greatest ---------- b (1 row) regression=# select greatest(now(), 'yesterday'); greatest ------------------------------- 2003-07-01 13:21:56.506106-07 (1 row) The cast to text is needed because 'a' and 'b' are really typed as unknown, and with polymorphic functions, you need a well defined data type. So if you had a table: create table g(f1 text, f2 text); insert into g values ('a','b'); insert into g values ('c','b'); regression=# select greatest(f1, f2) from g; greatest ---------- b c (2 rows) Doesn't help for 7.3.x, but at least you know help is on the way ;-) Of course, you could always just use the case statement. Joe
В списке pgsql-sql по дате отправления: