Re: Soustraction de tableaux de varchar

Lists: pgsql-fr-generale
From: Samuel ROZE <samuel(dot)roze(at)gmail(dot)com>
To: pgsql-fr-generale <pgsql-fr-generale(at)postgresql(dot)org>
Subject: Soustraction de tableaux de varchar
Date: 2010-11-27 22:41:19
Message-ID: AANLkTi=ivcV43A+=Jq2khZhD8qPuvRhZg4+7zXNf1pGj@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

Bonjour à tous,

J'utilise le module intarray notamment pour les opérateurs entre
tableaux d'entiers. Actuellement, j'essaye de soustraire
un tableau de varchar à un autre.

Après un temps de recherche, je n'ai pas trouvé. Connaissez-vous une
méthode simple de soustractions de tableaux de varchar? Ou en Pl/PgSQL
?
Ou bien dois-je moi même créer un module "varchararray" ?

Merci d'avance,
Samuel ROZE.


From: Samuel ROZE <samuel(dot)roze(at)gmail(dot)com>
To: pgsql-fr-generale <pgsql-fr-generale(at)postgresql(dot)org>
Subject: Re: Soustraction de tableaux de varchar
Date: 2010-11-28 15:18:54
Message-ID: AANLkTi=Y9=LeRt2zr17U-VuUrsN1RyLkSWpu3+58OvX9@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

Je me suis créer deux fonctions et deux opérateurs.

Pouvez-vous me dire ce que vous en pensez?
http://www.d-sites.com/2010/11/28/postgresql-deux-operateurs-pour-les-varchar-arrays/

Cordialement,
Samuel ROZE.

Le 27 novembre 2010 23:41, Samuel ROZE <samuel(dot)roze(at)gmail(dot)com> a écrit :
> Bonjour à tous,
>
> J'utilise le module intarray notamment pour les opérateurs entre
> tableaux d'entiers. Actuellement, j'essaye de soustraire
> un tableau de varchar à un autre.
>
> Après un temps de recherche, je n'ai pas trouvé. Connaissez-vous une
> méthode simple de soustractions de tableaux de varchar? Ou en Pl/PgSQL
> ?
> Ou bien dois-je moi même créer un module "varchararray" ?
>
> Merci d'avance,
> Samuel ROZE.
>


From: Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
To: Samuel ROZE <samuel(dot)roze(at)gmail(dot)com>
Cc: pgsql-fr-generale <pgsql-fr-generale(at)postgresql(dot)org>
Subject: Re: Soustraction de tableaux de varchar
Date: 2010-11-28 16:55:56
Message-ID: m2k4jxie03.fsf@2ndQuadrant.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

Samuel ROZE <samuel(dot)roze(at)gmail(dot)com> writes:
> J'utilise le module intarray notamment pour les opérateurs entre
> tableaux d'entiers. Actuellement, j'essaye de soustraire
> un tableau de varchar à un autre.

À mon avis une approche intéressante serait de faire le travail au
opérations sur les ensembles de SQL. Je pense à EXCEPT :

La concaténation existe déjà

dim=# SELECT ARRAY['bonjour', 'hello'] || ARRAY['hola'];
?column?
----------------------
{bonjour,hello,hola}
(1 row)

Comment retirer un élément :

dim=# select unnest(ARRAY['bonjour', 'hello', 'hola']) except select unnest(array['hello', 'hola']);
unnest
---------
bonjour
(1 row)

Et si on veut un tableau à nouveau, au lieu d'une ligne par élément :

dim=# select array_agg(x) from (select unnest(ARRAY['bonjour', 'hello', 'hola']) except select unnest(array['hello', 'hola'])) as t(x);
array_agg
-----------
{bonjour}
(1 row)

Bonne fin de dimanche,
--
Dimitri Fontaine
http://2ndQuadrant.fr PostgreSQL : Expertise, Formation et Support


From: Samuel ROZE <samuel(dot)roze(at)gmail(dot)com>
To: Dimitri Fontaine <dimitri(at)2ndquadrant(dot)fr>
Cc: pgsql-fr-generale <pgsql-fr-generale(at)postgresql(dot)org>
Subject: Re: Soustraction de tableaux de varchar
Date: 2010-11-28 17:16:44
Message-ID: AANLkTiksnwVq26vW=och_NLa_n91AkRcdgcdUu6yFaGC@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

Le 28 novembre 2010 17:55, Dimitri Fontaine <dimitri(at)2ndquadrant(dot)fr> a écrit :
> Samuel ROZE <samuel(dot)roze(at)gmail(dot)com> writes:
>> J'utilise le module intarray notamment pour les opérateurs entre
>> tableaux d'entiers. Actuellement, j'essaye de soustraire
>> un tableau de varchar à un autre.
>
> À mon avis une approche intéressante serait de faire le travail au
> opérations sur les ensembles de SQL. Je pense à EXCEPT :

Serait-ce plus rapide, en théorie? Je vais testé demain en pratique.

> La concaténation existe déjà
>
> dim=# SELECT ARRAY['bonjour', 'hello'] || ARRAY['hola'];
>       ?column?
> ----------------------
>  {bonjour,hello,hola}
> (1 row)

Oui mais elle ne supprime pas les doublons malheureusement...

> Comment retirer un élément :
>
> dim=# select unnest(ARRAY['bonjour', 'hello', 'hola']) except select unnest(array['hello', 'hola']);
>  unnest
> ---------
>  bonjour
> (1 row)
>
> Et si on veut un tableau à nouveau, au lieu d'une ligne par élément :
>
> dim=# select array_agg(x) from (select unnest(ARRAY['bonjour', 'hello', 'hola']) except select unnest(array['hello', 'hola'])) as t(x);
>  array_agg
> -----------
>  {bonjour}
> (1 row)

C'est intéressant je ne connaissais pas except!

Merci!
Bonne fin de week-end.