IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Suppression d'une partie de colonne


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2013
    Messages : 73
    Points : 40
    Points
    40
    Par défaut Suppression d'une partie de colonne
    Bonjour,

    J'ai récupéré une table sql dans laquelle j'ai la colonne 'nom' mais celui là est noté 2 fois : "DUPONT DUPONT"

    J'aimerais faire une requête pour supprimer les espaces et la deuxième occurence du nom pour ne reécrire que la première occurrence du nom càd "DUPONT".

    Est ce possible et si oui je ne vois pas comment la faire (j'ai 8000 enregistrements), j'ai essayé

    trim : supprime un blanc avant ou après, substr ou replace : demande une longueur, lenght : prends en compte la chaine entière, et mes espaces sont au milieu, donc ils font parti de la chaine !!

    Pouvez vous m'aider ? je suis sous Mysql.
    Merci d'avance.
    Cordialement.

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    il suffit de prendre la moitié gauche de la chaine.

    quelque chose comme (pas testé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    LEFT(LaColonneNom, (CHAR_LENGTH(LaColonneNom) - 1) /2)

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2013
    Messages : 73
    Points : 40
    Points
    40
    Par défaut
    Merci pour l'idée, je viens de tester avec çà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE personne SET Nom = rtrim(left(Nom, length(Nom)/2)) WHERE CodeID = 2;
    çà marche mais il reste des blancs à droite et ils ne sont pas enlevés par le rtrim ??? pourquoi ??

    Merci de vos réponses.
    Cordialement.

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    quel est le type de la colonne ?

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2013
    Messages : 73
    Points : 40
    Points
    40
    Par défaut
    La colonne est de type text
    merci

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par theo16 Voir le message
    Merci pour l'idée, je viens de tester avec çà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE personne SET Nom = rtrim(left(Nom, length(Nom)/2)) WHERE CodeID = 2;
    çà marche mais il reste des blancs à droite et ils ne sont pas enlevés par le rtrim ??? pourquoi ??
    Que donne ceci ?:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LEFT(Nom, LENGTH(RTRIM(Nom))/2)

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2013
    Messages : 73
    Points : 40
    Points
    40
    Par défaut
    çà ne marche pas, car comme l'espace est au milieu de la colonne Nom, le rtrim ne fonctionne que pour des espaces sur la droite.
    L'essai prend bien le nom à gauche mais aussi la moitié de l'espace, comme mon premier essai.
    Merci

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2013
    Messages : 73
    Points : 40
    Points
    40
    Par défaut
    J'ai lancé mon update pour enlever les noms de la droite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE personne SET Nom = rtrim(left(Nom, length(Nom)/2))
    çà a marchait sur toute la table en ne conservant que le nom sur la gauche, mais a quand même conservé la moitié des espaces qui étaient au milieu.

    J'ai donc relancé après un autre update pour éliminer ces blancs qui restaient à droite avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE personne SET Nom = trim(Nom);
    et aussi avec
    UPDATE personne SET Nom = rtrim(Nom);
    réponse : aucune ligne n'est affectée, donc rien n'est pris en compte.

    Pourtant dans la doc mysql ce mot clé est bien décrit, et pris en compte dans mon mysql 5.7
    Alors pourquoi le trim ou rtrim n'est pas pris en compte à l'exécution et que faire pour enlever ces espaces ???

    Merci de vos réponses.

  9. #9
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    qu'est-ce que vous fait dire qu'il y a une espace en fin ?

    Il s'agit peut être d'autre chose qu'une espace
    Que donne un SELECT ASCII(REVERSE(Nom)) pour l'une des lignes où il semble y avoir une espace ?

  10. #10
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2013
    Messages : 73
    Points : 40
    Points
    40
    Par défaut
    Quand vous éditez une ligne, et que vous mettez le curseur à la fin, il se place bien après la fin du nom, donc à la fin de l'espace.
    Mais bon je viens de régler le pb, j'ai fait une petite moulinette en php qui me sort ces espaces et m'update l'enregistrement.
    mais bon je pensais le faire avec sql pour aller plus vite au lieu de faire un script.
    Merci à tous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Suppression d'une partie du contenu d'une colonne
    Par tvd_marc.white dans le forum Langage SQL
    Réponses: 4
    Dernier message: 26/09/2011, 14h11
  2. Transposer une partie des colonnes d'une table
    Par mawi dans le forum Access
    Réponses: 2
    Dernier message: 04/03/2010, 10h35
  3. Copie d'une partie de colonne en fonction d'un critère
    Par Cadenwarr dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/02/2008, 00h01
  4. suppression d'une partie d'un champs
    Par ntahi dans le forum Langage SQL
    Réponses: 5
    Dernier message: 26/07/2007, 18h47
  5. suppression d'une partie de blat
    Par linalin dans le forum Bioinformatique
    Réponses: 15
    Dernier message: 03/04/2007, 08h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo