[Résolu] Dédoubler une colonne

Discussions sur le module de base de données Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est dédiée au module Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Pour accélérer les réponses, vous pouvez mettre en ligne votre base en joignant un fichier ODB : comment faire.
fab
Membre OOrganisé
Membre OOrganisé
Messages : 88
Inscription : 30 nov. 2005 14:01
Localisation : Asie

[Résolu] Dédoubler une colonne

Message par fab »

Bjr,

Je récupère une base dont certaines données ont été entrées dans une seule colonne.
Pour simplifier : Prénom et Nom sont dans un seul enregistrement.
Et je cherche à les "éclater" dans deux nouvelles colonnes

Les fonctions RIGHT ou LEFT ne m'aident pas trop dans ce cas.

Bien sûr, je pourrais traiter ça dans un tableur et réimporter ensuite mais y-a t-il une solution en SQL pur ?

Merci de votre aide
Dernière modification par fab le 28 nov. 2011 13:37, modifié 1 fois.
OpenOffice 4.0.1
sous Windows 7 64bits
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16955
Inscription : 03 mars 2006 17:02
Localisation : Venise verte

Re: Dédoubler une colonne

Message par jeanmimi »

Bonjour,
Autant concaténer est simple, dé-concaténer est inconnu au bataillon. Ce qui serait intéressant, c'est de repérer le l'espace vide entre le prénom et le nom, puis séparer ce qui et à gauche de ce qui est à droite de cet espace, mais je n'ai pas trouvé comment.
Ceci étant dit, quel peut être l'intérêt de dédoubler cette colonne ?
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25143
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: Dédoubler une colonne

Message par Dude »

Salut,
jeanmimi a écrit :c'est de repérer le l'espace vide entre le prénom et le nom
La fonction LOCATE le permet.

Si on part du principe que la table a la structure suivante :

Code : Tout sélectionner

nom_complet | nom | prenom
L'exécution par Outils > SQL de cette requête permet d'éclater en deux parties le champ nom_complet :

Code : Tout sélectionner

UPDATE "clients" SET
"nom" = SUBSTRING( "nom_complet", LOCATE( ' ', "nom_complet" ) + 1 ),
"prenom" = LEFT( "nom_complet", LOCATE( ' ', "nom_complet" ))
Merci d'ajouter [Résolu] au début du titre de ton 1er message et de cocher la case de l'icône de sujet (le V vert).
fab
Membre OOrganisé
Membre OOrganisé
Messages : 88
Inscription : 30 nov. 2005 14:01
Localisation : Asie

Re: Dédoubler une colonne

Message par fab »

jeanmimi a écrit :Ceci étant dit, quel peut être l'intérêt de dédoubler cette colonne ?
Il y a une erreur de conception dans la table. Il y aurait du y avoir 2 champs.
Ce n'est pas moi qui suis à l'origine de la base. Je fais avec...
Dude a écrit :La fonction LOCATE le permet.
Super, ça va bien me servir.

Je passe en [Résolu]

A bientôt
OpenOffice 4.0.1
sous Windows 7 64bits
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16955
Inscription : 03 mars 2006 17:02
Localisation : Venise verte

Re: [Résolu] Dédoubler une colonne

Message par jeanmimi »

Excellent !
Je joins un petit exemple pour ceux qui voudraient mettre le SQL dans une requête en Mode ébauche.
Pièces jointes
Base avec LOCATE pour déconcaténer.odb
(5.29 Kio) Téléchargé 239 fois
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Répondre