Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Fri 17 April 2020 16:14

Theos2000
Participant assidu
Date d'inscription: 15 Jun 2015
Messages: 221

Postgres convertir texte en array

Bonjour, j''ai une colonne que j'ai converti en tableau, mais suite a une restauration de ma base ,postgres le  lit comme du texte 

ex  :{010010000}  => Text .


Or je cherche une manipulation pour dans un update le transformer en tableau => {010010000} text []


Si je refais un array dessus ca ne va pas puisque je me retrouve avec ce genre de résultat {"{920640103}"}

Est ce que quelqu'un aurai une solution ou tombé sur un cas similaire ?

Merci

Hors ligne

 

#2 Fri 17 April 2020 16:25

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: Postgres convertir texte en array

Bonjour,

Un cast devrait suffire:

Code:

select '{010010000}'::text[] as asarray, pg_typeof('{010010000}'::text[]);

Si votre colonne est de type text, vous ne pourrez pas faire d'update direct, il faudra changer le type de text -> text[].

Pour cela, il faut utilser alter table ... alter column ... using, par exemple:

Code:

create table test (
    msg text
);

insert into test values ('{010010000}');

update test set msg = msg::text[];

select msg, pg_typeof(msg) from test;
-- msg            pg_typeof
-- {010010000}    text

alter table test alter column msg type text[] using cast(msg as text[]);

select msg, pg_typeof(msg) from test;
--msg        pg_typeof
--{010010000}    text[]

Nicolas

Hors ligne

 

#3 Wed 22 April 2020 07:20

Theos2000
Participant assidu
Date d'inscription: 15 Jun 2015
Messages: 221

Re: Postgres convertir texte en array

Super merci ça semble bien fonctionner pour le cast. Par contre pour le update moins bien je vais donc passer par un create table. C'est vraiment sympa merci

Hors ligne

 

#4 Wed 22 April 2020 10:43

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: Postgres convertir texte en array

Bonjour,

Un update ne peut marcher que si la valeur qu'on affecte a la colonne a le meme type que la colonne.
Sinon, il faut faire un alter table ... using ..., qui non seulement change le type de la colonne mais fait l'update aussi (il change le type en utilisant l'expression après le 'using'.

Donc, vous pouvez changer le type d'une colonne qui contient des valeurs, pas besoin de recréer la table pour cela.

Nicolas

Hors ligne

 

#5 Thu 23 April 2020 22:25

Theos2000
Participant assidu
Date d'inscription: 15 Jun 2015
Messages: 221

Re: Postgres convertir texte en array

CQFD merci ca marche bien !

Hors ligne

 

Pied de page des forums

Powered by FluxBB