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 :

Modifier le Xème caractère dans un champ


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3
    Par défaut Modifier le Xème caractère dans un champ
    Bonjour,

    J'ai un petit souci pour composer une requête. J'ai un champ varchar dans ma table et je souhaite modifier le 3ème caractère de cette chaine ( par ex ).

    La valeur de mon champ : "abcdef"

    Je souhaite updater et remplacer le c par un z ce qui donne "abzdef".

    Actuellement, je procède en récupérant la valeur de mon champ que je modifie avec php et ensuite j'update ma table.

    J'ai vu dans la doc mysql http://dev.mysql.com/doc/refman/5.0/...functions.html la fonction substr.

    Si j'arrive bien à la mettre en application sur un select, je ne vois pas comment faire avec update cela me met une erreur.

    Pourriez vous m'aider pour la syntaxe, si c'est possible ?

    Cordialement

  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
    Qu'as-tu essayé comme requête ?
    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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3
    Par défaut
    Je viens de trouver une solution, peut être il y a t'il plus simple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE ma_table SET mon_champ= CONCAT( SUBSTRING(mon_champ, 1, 2), 'z',  SUBSTRING(mon_champ, 4, 2)) WHERE id=1
    Cela fonctionne mais cela m'oblige à faire une bidouille avec une concaténation et 2 substrings.

    Je pensais pouvoir faire une requête du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE ma_table SET SUBSTRING(mon_champ, 3, 1)='z' WHERE id=1
    Si vous avec plus simple je suis preneur.

    Encore merci

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3
    Par défaut
    Dernier UP,

    Comme la chaine de caractère dans le champ de ma table est de taille fixe. J'ai opté pour cette solution avec un concat ( left(), valeur, right() )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE ma_table SET mon_champ = CONCAT( LEFT(mon_champ, $left), $valeur, RIGHT(mon_champ, $right) ) WHERE id=$id
    Merci pour votre aide

  5. #5
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 932
    Par défaut
    Quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CONCAT( Left(colonne,n-1),'c',SUBSTRING(colonne FROM n+1))
    pour mettre un 'c' en position n.
    Mais je ne sais pas comment ça réagit si la longueur du champ est inférieure à n.

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

Discussions similaires

  1. Modifier le dernier caractère d'un champ dans une table.
    Par jacko842 dans le forum Requêtes et SQL.
    Réponses: 15
    Dernier message: 02/06/2008, 20h31
  2. Suupression caractères dans un champ suite import
    Par samlepiratepaddy dans le forum Access
    Réponses: 8
    Dernier message: 18/10/2005, 21h24
  3. 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
  4. Selection des x premiers caractères dans un champ précis
    Par Schulman dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/01/2005, 09h23
  5. Connaitre le nombre de caractère ";" dans un champ
    Par PrinceMaster77 dans le forum ASP
    Réponses: 3
    Dernier message: 25/11/2004, 17h36

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