[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.

[Résolu] Dédoubler une colonne

Messagepar fab » 27 Nov 2011 18:19

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 édition par fab le 28 Nov 2011 13:37, édité 1 fois.
OpenOffice 4.0.1
sous Windows 7 64bits
Avatar de l’utilisateur
fab
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 88
Inscrit le : 30 Nov 2005 14:01
Localisation : Asie

Re: Dédoubler une colonne

Messagepar jeanmimi » 27 Nov 2011 19:18

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 : Version: 6.3.3.2 (x64) (4 novembre 2019)
Java (x64) 1.8.0_xxx, Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 15063
Inscrit le : 03 Mars 2006 17:02
Localisation : Venise verte

Re: Dédoubler une colonne

Messagepar Dude » 28 Nov 2011 10:23

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   AgrandirRéduire
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   AgrandirRéduire
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).
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 21118
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

Re: Dédoubler une colonne

Messagepar fab » 28 Nov 2011 13:31

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
fab
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 88
Inscrit le : 30 Nov 2005 14:01
Localisation : Asie

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

Messagepar jeanmimi » 28 Nov 2011 14:44

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é 132 fois
LibreOffice Version : Version: 6.3.3.2 (x64) (4 novembre 2019)
Java (x64) 1.8.0_xxx, Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 15063
Inscrit le : 03 Mars 2006 17:02
Localisation : Venise verte


Retour vers Base de données

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 5 invité(s)