[prev in list] [next in list] [prev in thread] [next in thread]
List: postgresql-sql
Subject: Re: [SQL] How to find primary keys by querying system tables
From: Haller Christoph <ch () rodos ! fzk ! de>
Date: 2001-10-25 15:40:26
[Download RAW message or body]
>
> Is there a way of testing for membership in an int2vector-field? For
> example:
> select column, "prim.key" from ... where pg_attribute.attnum in
> pg_index.indkey
> ??
>
I think so. Refer to the array section of the documentation.
Extract:
To search for a value in an array, you must check each value of the array. This can \
be done by hand (if you know the size of the array):
SELECT * FROM sal_emp WHERE pay_by_quarter[1] = 10000 OR
pay_by_quarter[2] = 10000 OR
pay_by_quarter[3] = 10000 OR
pay_by_quarter[4] = 10000;
However, this quickly becomes tedious for large arrays, and is not helpful if the \
size of the array is unknown. Although it is not part of the primary PostgreSQL \
distribution, in the contributions directory, there is an extension to PostgreSQL \
that defines new functions and operators for iterating over array values. Using this, \
the above query could be:
SELECT * FROM sal_emp WHERE pay_by_quarter[1:4] *= 10000;
To search the entire array (not just specified columns), you could use:
SELECT * FROM sal_emp WHERE pay_by_quarter *= 10000;
In addition, you could find rows where the array had all values equal to 10 000 with: \
SELECT * FROM sal_emp WHERE pay_by_quarter **= 10000;
To install this optional module, look in the contrib/array directory of the \
PostgreSQL source distribution.
Regards, Christoph
---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?
http://archives.postgresql.org
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic