Integer ranges in PostgreSQL

Started by Marco Lazzeriabout 22 years ago3 messagesgeneral
Jump to latest
#1Marco Lazzeri
marco.lazzeri@noze.it

Does exist a syntax in PostgreSQL for integer (INT) number ranges?

It could be useful for queries like
"SELECT * FROM table WHERE id IN (range from 1 to 20)"

Thank you!
Marco

#2Gregory Wood
gwood@ewebengine.com
In reply to: Marco Lazzeri (#1)
Re: Integer ranges in PostgreSQL

Marco Lazzeri wrote:

Does exist a syntax in PostgreSQL for integer (INT) number ranges?

It could be useful for queries like
"SELECT * FROM table WHERE id IN (range from 1 to 20)"

I believe you're looking for BETWEEN:
SELECT * FROM table WHERE id BETWEEN 1 AND 20;

That is standard SQL and not specific to PostgreSQL

Greg

#3Stephan Szabo
sszabo@megazone23.bigpanda.com
In reply to: Marco Lazzeri (#1)
Re: Integer ranges in PostgreSQL

On Fri, 16 Jan 2004, Marco Lazzeri wrote:

Does exist a syntax in PostgreSQL for integer (INT) number ranges?

It could be useful for queries like
"SELECT * FROM table WHERE id IN (range from 1 to 20)"

As already sent, BETWEEN will do this for you already for this kind
of use. However, if you need it for a join or something, you could
also write a set returning function that returns you the set of numbers.

Maybe something like the not really tested:

create or replace function range(int, int, int) returns setof int as '
declare
i int;
begin
i := $1;
while (i <= $2) loop
return next i;
i := i + $3;
end loop;
return;
end;' language 'plpgsql';
select * from range(1,20,1);