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é ?

#1 Wed 15 February 2023 17:50

Sylvain M.
Participant assidu
Lieu: Saint-Pierre-des-Nids (53)
Date d'inscription: 8 Sep 2005
Messages: 994

SQL : Convertir chaine en Array avec SQLite

Salut à tous,

J'ai des données dans une colonne, qui sont une concaténation de valeurs séparées par des virgules.
Je souhaite créer autant de lignes que de valeur dans cette colonne.

J'y arrive bien avec PostGreSQL avec une requête de ce type :

Code:

trim(unnest(string_to_array(monchamp, ',')))

Mais j'aimerais bien le faire directement avec les couches virtuelles de QGis, donc avec SQLite, sans passer par PostGreSQL.

J'ai testé* avec split(monchamp), mais ça n'a pas marché.

Merci pour vos conseils smile


* ça m'avait été proposé par ChatGPT, à "qui" j'avais posé la question et qui m'avait répondu "Notez que la fonction "split" est disponible uniquement pour les versions de SQLite 3.31.0"
Pourtant, un select sqlite_version(); depuis les couches virtuelles m'indique que je suis en "3.39.4", donc théoriquement OK pour "split()".


Sylvain M.

Hors ligne

 

#2 Wed 15 February 2023 20:36

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

Re: SQL : Convertir chaine en Array avec SQLite

Bonsoir,

Possible avec une cte recursive apparemment:
https://stackoverflow.com/questions/346 … ure-sqlite

Nicolas

Hors ligne

 

#3 Thu 16 February 2023 12:06

Sylvain M.
Participant assidu
Lieu: Saint-Pierre-des-Nids (53)
Date d'inscription: 8 Sep 2005
Messages: 994

Re: SQL : Convertir chaine en Array avec SQLite

Merci Nicolas smile

Malheureusement, je ne maitrise pas encore les requêtes récursives ... (et je n'ai pas le temps de m'y pencher actuellement, même si je mesure l'intérêt !)

Du coup, j'ai plus vite fait de passer ma table sous PostGreSQL pour gérer cela avec string_to_array()

Mais je suis surpris que cette fonction split() ne marche pas, alors que je vois des références à son sujet hmm
D'autant que je n'ai pas de réponse du type "no such function: split", mais un résultat "NULL" pour chaque entité... ?


Sylvain M.

Hors ligne

 

Pied de page des forums

Powered by FluxBB