Search Postgresql Archives

get the array value?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Dec 25, 2008 at 7:15 AM, Charles.Hou <ivan.hou@xxxxxxxxxxxxx> wrote:
> name[] = { JOHN , ALEX , TEST ,""}
>
> SQL : select name from table1 where 'TEST' = any (name)
>
> return: { JOHN , ALEX , TEST }
>
> in this sql command, how can i get the index of 'TEST' is 3 ?

First of all. I assume the code above is meant to be pseudo-code, otherwise
this makes not much sense to me.

But if I understand you correctly, that you want to find the index (or position)
of a specific item in an array, then you have to write a function that iterates
over the array and returns the index.

This is a bad design however and it doesn't scale up well with large arrays.

A better approach is storing the array elements as rows in a table with an
index, which can be queried more efficiently.

For example:

CREATE TABLE records (
 id SERIAL PRIMARY KEY
);

CREATE TABLE names (
 record_id INTEGER REFERENCES records,
 position INTEGER NOT NULL,
 name TEXT NOT NULL,
 UNIQUE (record_id, position)
);

This way you can easily search by doing something like

SELECT position FROM names
WHERE name = 'TEST';

Regards,
Victor Nawothnig

-- 
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux