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

Requêtes MySQL Discussion :

Insérer une chaine de caractère dans un champ qui contient déjà une chaine existante.


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Insérer une chaine de caractère dans un champ qui contient déjà une chaine existante.
    Bonjour, je vous expose mon problème :

    Dans ma table users j’ai un champ name qui liste les noms des utilisateurs. Actuellement le nom des utilisateurs se compose de la première lettre du prénom suivi du nom.

    Exemple pour l’utilisateur « Jean DUPON » il est stocké dans le champ name comme « jdupon »

    J’ai besoin d’ajouter un point entre la première et la deuxième lettre pour tous les utilisateurs. J’aimerai donc faire une requête SQL qui ajoute un point "." entre la première lettre du prénom et la première lettre du nom pour tout les utilisateurs.

    Exemple : « j.dupon »

    Pouvez vous m’aidez à formuler une requête qui insère un point "." après la première lettre et ce pour tous les noms d’utilisateurs qui on comme correspondance le même nom de domaine dans le champ "email" « @domaine.fr »

    Déjà est ce possible de rajouter une chaine de caractère dans une chaine existante ? Si oui, comment puis-je m’y prendre ?

    J'ai essayé des choses dans ce genre mais sans succès...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE `glpidb`.`glpi_users` SET `name` = '_.%' WHERE (`glpi_users`.`email` LIKE '%@domaine.fr');

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Ton souci, va être que tu dois faire une boucle, il ta faut alors utiliser un langage de programmation pour ce faire.

    Tu ne peux changer qu'une seule valeur à la fois dans un update, il faut boucler sur cette requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT CONCAT(SUBSTRING(name,1,1),'.',SUBSTRING(name,2)) FROM glpi_users

  3. #3
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 040
    Points : 23 795
    Points
    23 795
    Par défaut
    Bonjour,

    Non, pas besoin de boucle. Il suffit de transformer le SELECT de MaitrePylos en UPDATE

    ced

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Ben, comme je travaille aussi avec GLPI, j'ai tenter le coup, et donc la requête serait proche de ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UPDATE glpi_users AS t1 SET t1.name = (SELECT CONCAT(SUBSTRING(name,1,1),'.',SUBSTRING(name,2)) FROM (SELECT * FROM glpi_users) AS x)
    Hors dans ce cas, la sous requête ne donne pas un élément unique, donc erreur.

    C'est pour cela que je disais 'boucle', maintenant je suis peut-être sur la mauvaise route

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Merci pour ton aide MaitrePylos ta requête SELECT fonctionne parfaitement.
    Merci à toi Ced pour ta petite information complémentaire.

    J’ai donc réussi à faire ce dont j’avais besoin.

    Voici la requête au final :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE `glpidb`.`glpi_users` SET `name` = CONCAT(SUBSTRING(name,1,1),'.',SUBSTRING(name,2)) WHERE (`glpi_users`.`email` LIKE '%@domaine.fr');

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/04/2010, 14h42
  2. Chercher une chaine de caractère dans un champ
    Par donnadieujulien dans le forum DB2
    Réponses: 1
    Dernier message: 20/06/2008, 13h23
  3. Réponses: 2
    Dernier message: 07/03/2007, 10h46
  4. enregistrer une valeur > 250 caractère dans un champ
    Par zidenne dans le forum Administration
    Réponses: 4
    Dernier message: 04/09/2006, 10h42
  5. Remplacer une PARTIE de chaine de caractères dans un champ
    Par Turlututuchapopointu dans le forum Langage SQL
    Réponses: 1
    Dernier message: 07/08/2005, 11h57

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