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

 MySQL Discussion :

Supprimer du texte d'une colonne (pas tout)


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 18
    Par défaut Supprimer du texte d'une colonne (pas tout)
    Bonsoir,

    J'ai créé une colonne referencedans laquelle se trouve lesdites references et leur descriptifs -> erreur de conception je me l'accorde


    Je cherche en vain depuis quelques nuits à écrire un script permettant d'éliminer ce texte qui commence toujours par 'Le' (et dont la longueur est variable)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     UPDATE table
    SET reference = REPLACE( reference, LIKE "Le%","");
    LIKE % n'est pas compris

    Ou bien c'est moi qui n'ai pas compris ?

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par melix1 Voir le message
    Je cherche en vain depuis quelques nuits à écrire un script permettant d'éliminer ce texte qui commence toujours par 'Le' (et dont la longueur est variable)
    Si "Le" ne peut pas faire partie de ce qui précède le texte à éliminer, il faut chercher la position de "Le" et ne garder que le nombre de caractères précédant cette position.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT POSITION('Le' IN '1234Le quelque chose')
    => 5

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT LEFT('1234Le quelque chose', POSITION('Le' IN '1234Le quelque chose') - 1)
    => '1234'

    Adapté à ton cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT LEFT(reference, POSITION('Le' IN reference) - 1)
    Cette fonction fait partie des fonctions de chaînes de caractères de MySQL.
    Bonne nuit !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 18
    Par défaut
    Merci Phil,

    Si j'ai bien pigé, ce script selectionne la partie gauche -1 à partir de la chaine "Le"

    Ca marche au poil !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT LEFT(`reference`, POSITION('Le' IN reference) - 1)
    FROM matable
    Puis-je integrer cette commande SELECT avec INSERT INTO (genre comme ca )?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ALTER TABLE matable
    	ADD aleax_reference VARCHAR (40);
     
    INSERT INTO matable (aleax_reference)
    SELECT LEFT(`reference`, POSITION('Le' IN reference) - 1)
    FROM matable;
    ou alors il y a plus simple ?

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    INSERT ajoute des lignes à la table !
    Ce que tu veux, je crois que c'est plutôt alimenter ta nouvelle colonne avec la chaîne calculée ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE ta_table
    SET aleax_reference = LEFT('reference', POSITION('Le' IN 'reference') - 1)
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 18
    Par défaut
    Oui,
    j'ai testé INSERT et je retrouve les resultats dont les yeux ne sont pas en face des trous

    j'étais en train de batailler avec des jointures quand je t'ai enfin lu !

    Faudra que je te paye une mousse quand je serai de passage à toulouse

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par melix1 Voir le message
    Faudra que je te paye une mousse quand je serai de passage à toulouse
    Volontiers !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

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

Discussions similaires

  1. [DisplayTag] Comment changer la couleur du texte d'une colonne
    Par azur_34 dans le forum Taglibs
    Réponses: 8
    Dernier message: 06/08/2007, 17h39
  2. Aligner le contenu texte d'une colonne de Jtable
    Par grabriel dans le forum Composants
    Réponses: 2
    Dernier message: 26/12/2006, 09h56
  3. Réponses: 3
    Dernier message: 22/10/2006, 23h15
  4. supprimer les doublons . . . . d'une colonne donnée !
    Par pekka77 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/10/2006, 17h38
  5. Réponses: 3
    Dernier message: 16/06/2006, 11h53

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